用AU3控制驱动程序签名的源码
控制“驱动程序签名”是件不太容易的事,简单地操作注册表并不奏效。下面的AU3代码(转贴)可以解决这个问题:
运行此程序前的驱动程序签名状态
运行此程序后的驱动程序签名状态
下面是源程序
;;;;;/////////////////////////////////////////////////////////////////////
Dim $dlgTitleSysProp="系统属性"
Dim $hotkeyDrvSign ="!S"
Dim $dlgTitleDrvSignOpt = "驱动程序签名选项"
Dim $hotkeyIgnoreSign = "!I"
;下面的是提示框代码,可以去掉
MsgBox(0,@OSType,@OSVersion)
If @OSType <> "WIN32_NT" Then
exit
Endif
if @OSVersion = "WIN_NT4" Then
exit
Endif
If @OSVersion = "WIN_2000" Then
MsgBox(0,$dlgTitleSysProp,$dlgTitleSysProp)
$dlgTitleSysProp = "系统特性"
Endif
BlockInput(1)
run("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2")
WinWaitActive($dlgTitleSysProp)
Send($hotkeyDrvSign)
WinWaitActive($dlgTitleDrvSignOpt)
Send($hotkeyIgnoreSign)
Send("{ENTER}")
WinWaitActive($dlgTitleSysProp)
;Send("{ENTER}")
WinClose($dlgTitleSysProp)
Exit
BlockInput(0)
;;;;;/////////////////////////////////////////////////////////////////////
此程序在XP下测试通过。
不过我没太看明白这程序,希望有朋友写个语句注解,先谢过了。
[ 本帖最后由 cycyc 于 2009-3-24 16:24 编辑 ] 学习了,先谢过共享! Dim $dlgTitleSysProp="系统属性"
Dim $hotkeyDrvSign ="!S"
;Dim $dlgTitleDrvSignOpt = "驱动程序签名选项"
Dim $dlgTitleDrvSignOpt = "驱动程序签名"
Dim $hotkeyIgnoreSign = "!I"
;下面的是提示框代码,可以去掉
MsgBox(0,@OSType,@OSVersion);提示是什么系统。
If @OSType <> "WIN32_NT" Then ;判断系统是否满足条件,不是2000或XP的系统退出。
exit
Endif
if @OSVersion = "WIN_NT4" Then;判断系统是否满足条件,不是2000或XP的系统退出。
exit
Endif
If @OSVersion = "WIN_2000" Then;判断系统是否满足条件,是2000的系统即改变窗口的值。
MsgBox(0,$dlgTitleSysProp,$dlgTitleSysProp)
$dlgTitleSysProp = "系统特性"
MsgBox(0,@OSType,@OSVersion)
Endif
;以下是最重要的部分,上面的判断都通过了,说明是2000或XP的系统,那么开始执行下面的代码。
BlockInput(1);屏蔽键盘鼠标。
run("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2");打开系统属性的硬件选项框。
WinWaitActive($dlgTitleSysProp);判断当前窗口是否为系统属性。
Send($hotkeyDrvSign);发送S按键
WinWaitActive($dlgTitleDrvSignOpt);判断当前窗口是否为驱动程序签名。
Send($hotkeyIgnoreSign);发送I按键
Send("{ENTER}");发送回车键
WinWaitActive($dlgTitleSysProp);判断当前窗口是否为系统属性。
;Send("{ENTER}")
WinClose($dlgTitleSysProp);关闭系统属性窗口。
Exit;退出
BlockInput(0) ;允许键盘鼠标输入。
大体是这样子的
[ 本帖最后由 sowind 于 2009-3-24 11:28 编辑 ] 原帖由 sowind 于 2009-3-24 11:26 发表 http://www.autoitx.com/images/common/back.gif
Dim $dlgTitleSysProp="系统属性"
Dim $hotkeyDrvSign ="!S"
Dim $dlgTitleDrvSignOpt = "驱动程序签名选项"
Dim $hotkeyIgnoreSign = "!I"
;下面的是提示框代 ...
谢谢sowind,你的回复很快很及时。
但我对程序中发"!S"和 "!I"的句子
这两行仍然不太理解。在打开“系统属性”的时候,第三个选项卡才是关于驱动程序签名的。但从程序发的按键序列来看,似乎是没有切换到卡片的动作,而是直接就发S和I键了?
似乎少了动作。
当然程序是没问题的,已经测试过了。
肯定是我的理解上的问题。
[ 本帖最后由 cycyc 于 2009-3-24 13:30 编辑 ] 原帖由 cycyc 于 2009-3-24 13:01 发表 http://www.autoitx.com/images/common/back.gif
谢谢sowind,你的回复很快很及时。
但我对程序中发"!S"和 "!I"的句子
这两行仍然不太理解。在打开“系统属性”的时候,第三个选项卡才是关于驱动程序签名的。但从程序发的按键序列来看,似乎是没有切换到卡片的 ...
请看清以下这一句,这是直接打开系统属性的第三选项,即硬件选项框:
run("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2");打开系统属性的硬件选项框。 所以根本不存在还要切换的问题。 原帖由 sowind 于 2009-3-24 14:53 发表 http://www.autoitx.com/images/common/back.gif
所以根本不存在还要切换的问题。
谢谢,我明白了。 给你评分了,谢谢…………………… 这个好像调用注册表也行吧 HKLM\SOFTWARE\Microsoft\Driver Signing,注册表位置,不过貌似无法改,会自动还原的 帮你找了个函数,在udf区里 是的支持了嘿嘿 求win7的关闭驱动签名验证方法
页:
[1]