找回密码
 加入
搜索
查看: 2871|回复: 12

用AU3控制驱动程序签名的源码

[复制链接]
发表于 2009-3-24 09:46:44 | 显示全部楼层 |阅读模式
控制“驱动程序签名”是件不太容易的事,简单地操作注册表并不奏效。

下面的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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-3-24 11:05:53 | 显示全部楼层
学习了,先谢过共享!
发表于 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 编辑 ]

评分

参与人数 1金钱 +3 收起 理由
cycyc + 3

查看全部评分

 楼主| 发表于 2009-3-24 13:01:40 | 显示全部楼层
原帖由 sowind 于 2009-3-24 11:26 发表
[au3]Dim $dlgTitleSysProp="系统属性"
Dim $hotkeyDrvSign ="!S"
Dim $dlgTitleDrvSignOpt = "驱动程序签名选项"
Dim $hotkeyIgnoreSign = "!I"
;下面的是提示框代 ...


谢谢sowind,你的回复很快很及时。
但我对程序中发"!S"和 "!I"的句子
这两行仍然不太理解。在打开“系统属性”的时候,第三个选项卡才是关于驱动程序签名的。但从程序发的按键序列来看,似乎是没有切换到卡片的动作,而是直接就发S和I键了?
似乎少了动作。
当然程序是没问题的,已经测试过了。
肯定是我的理解上的问题。

[ 本帖最后由 cycyc 于 2009-3-24 13:30 编辑 ]
发表于 2009-3-24 14:52:15 | 显示全部楼层
原帖由 cycyc 于 2009-3-24 13:01 发表


谢谢sowind,你的回复很快很及时。
但我对程序中发"!S"和 "!I"的句子
这两行仍然不太理解。在打开“系统属性”的时候,第三个选项卡才是关于驱动程序签名的。但从程序发的按键序列来看,似乎是没有切换到卡片的 ...

请看清以下这一句,这是直接打开系统属性的第三选项,即硬件选项框:
run("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2");打开系统属性的硬件选项框。

评分

参与人数 1金钱 +2 收起 理由
cycyc + 2

查看全部评分

发表于 2009-3-24 14:53:51 | 显示全部楼层
所以根本不存在还要切换的问题。
 楼主| 发表于 2009-3-24 16:24:09 | 显示全部楼层
原帖由 sowind 于 2009-3-24 14:53 发表
所以根本不存在还要切换的问题。


谢谢,我明白了。
 楼主| 发表于 2009-3-27 11:21:44 | 显示全部楼层
给你评分了,谢谢……………………
发表于 2009-5-29 17:56:14 | 显示全部楼层
这个好像调用注册表也行吧
发表于 2009-5-30 01:00:17 | 显示全部楼层
HKLM\SOFTWARE\Microsoft\Driver Signing,注册表位置,不过貌似无法改,会自动还原的
发表于 2009-5-30 02:41:21 | 显示全部楼层
帮你找了个函数,在udf区里
发表于 2012-11-6 11:25:05 | 显示全部楼层
是的支持了嘿嘿
发表于 2013-2-28 14:18:22 | 显示全部楼层
求win7的关闭驱动签名验证方法
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 01:34 , Processed in 0.103816 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表