一个修改注册表后立即生效的源码. 跟组策略一样的效果

一个修改注册表后立即生效的源码. 跟组策略一样的效果. [复制链接]

   
福建网吧联盟

列兵

该用户从未签到

活力值
20 点
天下币
30 枚
阅读权限
5
积分
35
帖子
5
  • 串个门
  • 加好友
  • 打招呼
  • 发消息
电梯直达 跳转到指定楼层
楼主
  发表于 2007-6-15 17:05:02  | 只看该作者  | 倒序浏览
 一键分享
天下网盟网吧广告联盟,信誉好,收入高!搜狗、淘123导航25元/千次UV
<P>修改注册表,比如修改光盘为不自动运行,如果单单通过写注册项修改NoDriveTypeAutorun属性,则要使其生效必须重起电脑,但是TweakUI就可以立即生效,到网上查发现必须先通知Windows外壳更新信息。</P>
<P>最后去MSDN查了一下SendMessageTimeOut,觉得可以一试,结果还真成功了,呵呵

下面是我修改系统 Policy 设置后实现立即生效的方法:

SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,NULL,(LPARAM)(LPTSTR)lpD&amp;shy;ata,SMTO_NORMAL,1000,&amp;dwResult); 

上面是 C 语言的 API 函数调用,用易语言就是:

SendMessageTimeout (#HWND_BROADCAST, #WM_SETTINGCHANGE, 0, 0, #SMTO_NORMAL, 1000, dwResult)

.常量 HWND_BROADCAST, "65535"
.常量 SMTO_NORMAL, "0"
.常量 WM_SETTINGCHANGE, "26"

.DLL命令 SendMessageTimeout, 整数型, "user32", "SendMessageTimeoutA", , 
    .参数 hWnd, 整数型, , 要接收消息的一个窗口的句柄
    .参数 Msg, 整数型, , 消息的标识符
    .参数 wParam, 整数型, , 由消息决定
    .参数 lParam, 整数型, , 由消息决定
    .参数 fuFlags, 整数型, , 下述常数的一个或多个;SMTO_ABORTIFHUNG:如目标进程挂起,则函数立即返回;SMTO_BLOCK:除非函数返回,否则调用线程不能处理消息;SMTO_NORMAL:允许调用线程处理消息,同时保持函数继续执行
    .参数 uTimeout, 整数型, , 超时值,采用毫秒为单位
    .参数 lpdwResult, 整数型, 传址, 用于装载函数结果的一个变量;

这个API函数可以帮你通知底层应用程序更新注册表中 Policies 和 Enviroment 相关的所有注册项。</P>
<P>AU3都会吧。AU3也一样可以用。嘿嘿。</P>
<P>#NoTrayIcon
RegWrite("HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced","StartMenuChange","REG_DWORD","0")
RegWrite("HKLM/SYSTEM/CurrentControlSet/Control/CrashControl","AutoReboot","REG_DWORD","1")
<FONT color=#ff0000 size=4>DllCall</FONT><FONT size=4><FONT color=#ff0000>("user32.dll","int","SendMessageTimeout","hwnd",65535,"int",26,"int",0,"int",0,"int",0,"int",1000,"str","dwResult")
</FONT><FONT color=#ff0000>(这句关键。哈哈)</FONT></FONT>Exit
</P>

你可能感兴趣的:(windows,api,user,null,语言,搜狗)