cycyc 发表于 2009-3-24 09:46:44

用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 编辑 ]

hhasee 发表于 2009-3-24 11:05:53

学习了,先谢过共享!

sowind 发表于 2009-3-24 11:26:10

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 编辑 ]

cycyc 发表于 2009-3-24 13:01:40

原帖由 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 编辑 ]

sowind 发表于 2009-3-24 14:52:15

原帖由 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:51

所以根本不存在还要切换的问题。

cycyc 发表于 2009-3-24 16:24:09

原帖由 sowind 于 2009-3-24 14:53 发表 http://www.autoitx.com/images/common/back.gif
所以根本不存在还要切换的问题。

谢谢,我明白了。

cycyc 发表于 2009-3-27 11:21:44

给你评分了,谢谢……………………

jevonleen 发表于 2009-5-29 17:56:14

这个好像调用注册表也行吧

netegg 发表于 2009-5-30 01:00:17

HKLM\SOFTWARE\Microsoft\Driver Signing,注册表位置,不过貌似无法改,会自动还原的

netegg 发表于 2009-5-30 02:41:21

帮你找了个函数,在udf区里

一辈子为你 发表于 2012-11-6 11:25:05

是的支持了嘿嘿

Frequent 发表于 2013-2-28 14:18:22

求win7的关闭驱动签名验证方法
页: [1]
查看完整版本: 用AU3控制驱动程序签名的源码