永久锁定IE主页的方法

IE默认主页位于注册表HKCU\Software\Microsoft\Internet Explorer\Main下面的“Start Page”字符串的值,为避免IE主页被修改,我们可以永久地锁定它,禁止其它程序修改。网上找到很多永久锁定IE的方法,那些方法其实并非真正的“永久”,都是可以被改掉的,所以,我们换一种思路,从文件入手,针对IE本身来解决。下面我们以XP+IE8为例,介绍一下如何实现彻底地锁定IE主页。
首先,我们要弄懂IE主页的工作原理,IE启动后既然要加载主页,肯定要读取注册表[StartPage]的键值,所以“Start Page”这个字符串肯定在一个与IE相关的系统文件中,不一定是iexplore.exe,也可能是系统的DLL,因为IE要加载若干DLL它才能正常工作。用工具查看IE加载的DLL模块,有上百个,要知道具体是哪一个我们需要用工具分析。
由于IE主窗口和页面是分开的两个进程,所以不好掌控它,因此我们从IE属性中下手。IE属性对话框是一个DLL,名字叫做inetcpl.cpl,位于系统目录下。首先打开OllyDBG,选择文件-打开,在文件名输入rundll32.exe,参数中输入命令“C:\WINDOWS\system32\shell32.dll,Control_RunDLL INETCPL.CPL”,就绪后,在左下角命令窗口输入bp RegQueryValueExW,在读注册表的函数上下断点,按F9运行它,当断下的时候,注意看堆栈窗口中的数据,第三行ValueName的值就是要读取的注册表的值,如果是Start Page就停止来,否则就一直F9下去。当出现StartPage后,看堆栈窗口中0007A204那一行:CALL 到 RegQueryValueExW 来自 iertutil.5DDBA9A3,说明调用RegQueryValueExW的是iertutil.dll这个文件,也就是说,加载IE主页的任务是由iertutil.dll负责执行的,再往下有个Unicode "Start Page"的字样,右击它选择“数据窗口中跟随”,数据窗口中5DDB8F14处正是Start Page这个unicode字符串,数据窗口中右击选择“查看可执行文件”,打开文件窗口,可以看到“Start Page”位于文件0x00118314处,把它给改了。随便改一个名字,长度要相等,比如改第1个字节,把S改成Z,“Start Page”就变成了“Ztart Page”。最后在数据窗口右击选择备份-保存数据到文件,另存一份iertutil.dll。
我们目前已经把“Start Page”换掉了,接下来要进行下一步,就是添加注册表项,打开注册表编辑器,定位到Main下面,在Main下面建一个REG_SZ的值,名字改成刚才的Ztart Page,修改它的值为要锁定的网址。最后一步是替换iertutil.dll,有两种方法,一种是在PE下替换,一种是直接用ARK工具删掉system32下的iertutil.dll,然后复制刚才改好的进去,重启电脑。替换前先备份。
下面测试一下,打开IE,发现它会自动打开我们设置的页面,现在用任何修改IE主页的软件也无法再改变这个页面,因为StartPage已经作废了。同样的,IE属性中也无法修改,但是却可以读取,这是因为读取主页是通过iertutil.dll实现的,而修改是它自己在弄。我们自己要改的话,到注册表中去改“Ztart Page”的值就行了,麻烦的话就把inetcpl.cpl这个文件也改了,仍然是通过上述方法,只不过下断是在RegSetValueExW上面,断下后会找到Start Page,改为Ztart Page即可,这样,在IE属性就可以改主页了,而且有且只有它才能改。如果要恢复IE的话恢复iertutil.dll即可,或者重装系统。

377adab44aed2e73606f97ed8601a18b86d6fa69

 

转载自:http://hi.baidu.com/zzmzzff/item/baf96f30319ef280b711dbd0

Rundll32.exe使用方法大全

winexec(Pchar('StrCommand'),sw_Show);

其中StrCommand代表以下命令之一(使用Windows中的运行不要加引号):

rundll32 shell32,Control_RunDLL - 运行控制面板

rundll32 shell32,OpenAs_RunDLL - 打开打开方式窗口

rundll32 shell32,ShellAboutA Info-Box - 打开关于窗口

rundll32 shell32,Control_RunDLL desk.cpl - 打开显示属性窗口

rundll32 user,cascadechildwindows - 层叠全部窗口

rundll32 user,tilechildwindows - 最小化所有的子窗口

rundll32 user,repaintscreen - 刷新桌面

rundll32 shell,shellexecute Explorer - 重新运行Windows Explorer

rundll32 keyboard,disable - 锁写键盘

rundll32 mouse,disable - 让鼠标失效

rundll32 user,swapmousebutton - 交换鼠标按钮

rundll32 user,setcursorpos - 设置鼠标位置为(0,0)

rundll32 user,wnetconnectdialog - 打开映射网络驱动器窗口

rundll32 user,wnetdisconnectdialog - 打开断开网络驱动器窗口

rundll32 user,disableoemlayer - 显示BSOD窗口, (BSOD) = Blue Screen Of Death, 即蓝屏

rundll32 diskcopy,DiskCopyRunDll - 打开磁盘复制窗口

rundll32 rnaui.dll,RnaWizard - 运行Internet连接向导, 如果加上参数1则为silent模式

rundll32 shell32,SHFormatDrive - 打开格式化磁盘(A)窗口

rundll32 shell32,SHExitWindowsEx -1 - 冷启动Windows Explorer

rundll32 shell32,SHExitWindowsEx 1 - 关机

rundll32 shell32,SHExitWindowsEx 0 - 退当前用户

rundll32 shell32,SHExitWindowsEx 2 Windows9x 快速重启

rundll32 krnl386.exe,exitkernel - 强行退出Windows 9x(无确认)

rundll rnaui.dll,RnaDial MyConnect - 运行网络连接对话框

rundll32 msprint2.dll,RUNDLL_PrintTestPage - 选择打印机和打印测试页

rundll32 user,setcaretblinktime - 设置光标闪烁速度

rundll32 user, setdoubleclicktime - 测试鼠标双击速度

rundll32 sysdm.cpl,InstallDevice_Rundll - 搜索非PnP设备

控制面板中的各项功能

 

winexec('rundll32.exe shell32.dll, Control_RunDLL', 9);

{辅助选项 属性-键盘}

winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 1', 9);

{辅助选项 属性-声音}

winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 2', 9);

{辅助选项 属性-显示}

winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 3', 9);

{辅助选项 属性-鼠标}

winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 4', 9);

{辅助选项 属性-常规}

winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 5', 9);

{添加删除程序 属性-安装卸载}

winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 1', 9);

{添加删除程序 属性-Windows安装程序}

winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 2', 9);

{添加删除程序 属性-启动盘}

winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 3', 9);

{显示 属性-背景}

winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 0', 9);

{显示 属性-屏幕保护程序}

winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 1', 9);

{显示 属性-外观}

winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 2', 9);

{显示 属性-设置}

winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 3', 9);

{Internet 属性-常规}

winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 0', 9);

{Internet 属性-安全}

winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 1', 9);

{Internet 属性-内容}

winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 2', 9);

{Internet 属性-连接}

winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 3', 9);

{Internet 属性-程序}

winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 4', 9);

{Internet 属性-高级}

winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 5', 9);

{区域设置 属性-区域设置}

winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 0', 9);

{区域设置 属性-数字}

winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 1', 9);

{区域设置 属性-货币}

winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 2', 9);

{区域设置 属性-时间}

winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 3', 9);

{区域设置 属性-日期}

winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 4', 9);

winexec('rundll32.exe shell32.dll, Control_RunDLL Joy.cpl, 0', 9);

winexec('rundll32.exe shell32.dll, Control_RunDLL Joy.cpl, 1', 9);

{鼠标 属性}

winexec('rundll32.exe shell32.dll, Control_RunDLL Main.cpl', 9);

{多媒体 属性-音频}

winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 0', 9);

{多媒体 属性-视频}

winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 1', 9);

{多媒体 属性-MIDI}

winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 2', 9);

{多媒体 属性-CD音乐}

winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 3', 9);

{多媒体 属性-设备}

winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 4', 9);

{调制解调器 属性}

winexec('rundll32.exe shell32.dll, Control_RunDLL Modem.cpl', 9);

winexec('rundll32.exe shell32.dll, Control_RunDLL Netcpl.cpl', 9);

{密码 属性}

winexec('rundll32.exe shell32.dll, Control_RunDLL Password.cpl', 9);

{扫描仪与数字相机 属性}

winexec('rundll32.exe shell32.dll, Control_RunDLL Sticpl.cpl', 9);

{系统 属性-常规}

winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 0', 9);

{系统 属性-设备管理器}

winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 1', 9);

{系统 属性-硬件配置文件}

winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 2', 9);

{系统 属性-性能}

winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 3', 9);

{日期时间 属性}

winexec('rundll32.exe shell32.dll, Control_RunDLL timedate.cpl', 9);

{电源管理 属性}

winexec('rundll32.exe shell32.dll, Control_RunDLL Powercfg.cpl', 9);

winexec('rundll32.exe shell32.dll, Control_RunDLL Telephon.cpl', 9);

关于调用后的判断处理建议:

先声明一个cardinal类型的变量RtnCardinal获取返回值进行判断如:

RtnCardinal = winexec('rundll32.exe shell32.dll, Control_RunDLL Telephon.cpl', 9);

返回值 可能原因

0 程序超出内存

ERROR_BAD_FORMAT 程序为一个非法的Win32.EXE程序

ERROR_FILE_NOT_FOUND 指定文件没找到

ERROR_PATH_NOT_FOUND 指定路径没找到

 

使用方法:

点击“开始-程式-Ms-Dos方式”,进入Dos视窗,然後键入rundll32.exe user.exe,restartwindows,再按下回车键,这时你将看到,机器被重启了!怎么样,是不是很有趣?

当然,Rundll的功能绝不仅仅是重启你的机器。其实,Rundll者,顾名思义,执行Dll也,它的功能就是以命令列的方式呼叫Windows的动态链结库,Rundll32.exe与Rundll.exe的区别就在於前者是呼叫32位的链结库,而後者是运用於16位的链结库,它们的命令格式是:

RUNDLL.EXE ,,

这里要注意三点:1.Dll档案名中不能含有空格,比如该档案位於cProgram Files目录,你要把这个路径改成cProgra~1;2.Dll档案名与Dll入口点间的逗号不能少,否则程式将出错并且不会给出任何资讯!3.这是最重要的一点:Rundll不能用来呼叫含返回值参数的Dll,例如Win32API中的GetUserName(),GetTextFace()等。在Visual Basic中,提供了一条执行外部程式的指令Shell,格式为:

Shell “命令列”

如果能配合Rundll32.exe用好Shell指令,会使您的VB程式拥有用其他方法难以甚至无法实现的效果:仍以重启为例,传统的方法需要你在VB工程中先建立一个模组,然後写入WinAPI的声明,最後才能在程式中呼叫。而现在只需一句

Shell “rundll32.exe user.exe,restartwindows”就搞定了!是不是方便多了?

实际上,Rundll32.exe在呼叫各种Windows控制面板和系统选项方面有著独特的优势。下面,我就将本人在因特网上收集的有关Rundll的指令列举如下(很有用的,能省去你很多呼叫Windows API的时间!!),供大家在程式设计中引用:

命令列 rundll32.exe shell32.dll,Control_RunDLL

功能 显示控制面板

命令列 rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1

功能 显示“控制面板-辅助选项-键盘”选项视窗

命令列 rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2

功能 显示“控制面板-辅助选项-声音”选项视窗

命令列 rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3

功能 显示“控制面板-辅助选项-显示”选项视窗

命令列 rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4

功能 显示“控制面板-辅助选项-滑鼠”选项视窗

命令列 rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5

功能 显示“控制面板-辅助选项-传统”选项视窗

命令列 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1

功能 执行“控制面板-添加新硬体”向导。

命令列 rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter

功能 执行“控制面板-添加新印表机”向导。

命令列 rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1

功能 显示 “控制面板-添加删除程式-安装卸载” 面板。

命令列 rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2

功能 显示 “控制面板-添加删除程式-安装Windows” 面板。

命令列 rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3

功能 显示 “控制面板-添加删除程式-启动盘” 面板。

命令列 rundll32.exe syncui.dll,Briefcase_Create

功能 在桌面上建立一个新的“我的公文包”。

命令列 rundll32.exe diskcopy.dll,DiskCopyRunDll

功能 显示复制软碟视窗

命令列 rundll32.exe apwiz.cpl,NewLinkHere %1

功能 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。

命令列 rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0

功能 显示“日期与时间”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1

功能 显示“时区”选项视窗。

命令列 rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]

功能 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。

命令列 rundll32.exe rnaui.dll,RnaWizard

功能 显示“新建拨号连接”向导的视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0

功能 显示“显示属性-背景”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1

功能 显示“显示属性-萤屏保护”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2

功能 显示“显示属性-外观”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3

功能 显示显示“显示属性-属性”选项视窗。

命令列 rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder

功能 显示Windows的“字体”档案夹。

命令列 rundll32.exe shell32.dll,Control_RunDLL main.cpl @3

功能 同样是显示Windows的“字体”档案夹。

命令列 rundll32.exe shell32.dll,SHformatDrive

功能 显示格式化软碟对话框。

命令列 rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0

功能 显示“控制面板-游戏控制器-一般”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1

功能 显示“控制面板-游戏控制器-进阶”选项视窗。

命令列 rundll32.exe mshtml.dll,PrintHTML (HTML文档)

功能 列印HTML文档。

命令列 rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl

功能 显示Microsoft Exchange一般选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL main.cpl @0

功能 显示“控制面板-滑鼠” 选项 。

命令列 rundll32.exe shell32.dll,Control_RunDLL main.cpl @1

功能 显示 “控制面板-键盘属性-速度”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1

功能 显示 “控制面板-键盘属性-语言”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL main.cpl @2

功能 显示Windows“印表机”档案夹。

命令列 rundll32.exe shell32.dll,Control_RunDLL main.cpl @3

功能 显示Windows“字体”档案夹。

命令列 rundll32.exe shell32.dll,Control_RunDLL main.cpl @4

功能 显示“控制面板-输入法属性-输入法”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add

功能 执行“添加新调制解调器”向导。

命令列 rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0

功能 显示“控制面板-多媒体属性-音频”属性页。

命令列 rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1

功能 显示“控制面板-多媒体属性-视频”属性页。

命令列 rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2

功能 显示“控制面板-多媒体属性-MIDI”属性页。

命令列 rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3

功能 显示“控制面板-多媒体属性-CD音乐”属性页。

命令列 rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4

功能 显示“控制面板-多媒体属性-设备”属性页。

命令列 rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1

功能 显示“控制面板-声音”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl

功能 显示“控制面板-网路”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl

功能 显示ODBC32资料管理选项视窗。

命令列 rundll32.exe shell32.dll,OpenAs_RunDLL

功能 显示指定档案(drivepathfilename)的“打开方式”对话框。

命令列 rundll32.exe shell32.dll,Control_RunDLL password.cpl

功能 显示“控制面板-密码”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl

功能 显示“控制面板-电源管理属性”选项视窗。

命令列 rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder

功能 显示Windows“印表机”档案夹。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2)

命令列 rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0

功能 显示“控制面板-区域设置属性-区域设置”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1

功能 显示“控制面板-区域设置属性-数字”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2

功能 显示“控制面板-区域设置属性-货币”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3

功能 显示“控制面板-区域设置属性-时间”选项视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4

功能 显示“控制面板-区域设置属性-日期”选项视窗。

命令列 rundll32.exe desk.cpl,InstallScreenSaver [萤屏保护档案名]

功能 将指定的萤屏保护档案设置为Windows的屏保,并显示萤屏保护属性视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0

功能 显示“控制面板-系统属性-传统”属性视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1

功能 显示“控制面板-系统属性-设备管理器”属性视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2

功能 显示“控制面板-系统属性-硬体配置档案”属性视窗。

命令列 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3

功能 显示“控制面板-系统属性-性能”属性视窗。

命令列 rundll32.exe user.exe,restartwindows

功能 强行关闭所有程式并重启机器。

命令列 rundll32.exe user.exe,exitwindows

功能 强行关闭所有程式并关机。

命令列 rundll32.exe shell32.dll,Control_RunDLL telephon.cpl

功能 显示“拨号属性”选项视窗

命令列 rundll32.exe shell32.dll,Control_RunDLL themes.cpl

功能 显示“桌面主旨”选项面板

当然,不止是VisualBasic,象Delphi.VisualC++等其他程式设计语言也可以通过呼叫外部命令的方法来使用Rundll的这些功能,具体方法这里就不再详细叙述了。灵活的使用Rundll,一定会使你的程式设计轻轻松松,达到事半功倍的效果!

VBS模拟键盘输入示例

Set objShell = CreateObject("Wscript.Shell")

strCommandLine = "ttpsetup.exe" '启动安装程序

objShell.Run(strCommandLine)

set WshShell = CreateObject("WScript.Shell")

WScript.Sleep 3000 '延时3秒

WshShell.SendKeys "s" '模拟按下 S 键开始安装

WScript.Sleep 300 '延时0.3秒

WshShell.SendKeys "a" '模拟按下 A 键同意协议

WScript.Sleep 300

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 300

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 300

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 2000

WshShell.SendKeys "{TAB}" '模拟按下 Tab 键选择安装项目

WScript.Sleep 300

WshShell.SendKeys "{TAB}"

WScript.Sleep 300

WshShell.SendKeys " " '模拟按下空格键去除安装百度超级搜霸一行前的√号

WScript.Sleep 300

WshShell.SendKeys "{ENTER}" '模拟按下回车键完成最后一步

 

把以上代码复制到记事本中(右边的文字是说明,一起复制也不影响),再另存为 AutoSetup.vbs ,把此文件存放在千千静听安装执行程序(ttpsetup.exe)同一目录下,双击 AutoSetup.vbs 即可自动完成千千静听的安装。成功的关键是,你必须先安装一次千千静听,然后记住每一步的按键是什么,这个文件就可以拿去别的机上执行了。

 

SendKeys 的参数说明:

 

使用 SendKeys 方法可以将键击发送到无自动化界面的应用程序中。多数键盘字符都可用一个键击表示。某些键盘字符由多个键击组合而成(例如,CTRL+SHIFT+HOME)。要发送单个键盘字符,请将字符本身作为 string 参数发送。例如,要发送字母 x,则请发送 string 参数 "x"。

 

可使用 SendKeys 同时发送多个键击。为此,可将每个键击按顺序排列在一起,以此来创建表示一系列键击的复合字符串参数。例如,要发送键击 a、b 和 c,则需要发送字符串参数 "abc" 。SendKeys 方法将某些字符用作字符的修饰符(而不使用其本身的含义)。这组特殊的字符可包括圆括号、中括号、大括号,以及:

 

加号 "+"

插入记号 "^"

百分号 "%"

和“非”符号 "~"

 

用大括号 "{}" 括起这些字符可以发送它们。例如,要发送加号,请使用字符串参数 "{+}"。SendKeys中使用的中括号 "[ ]" 无任何特殊含义,但是必须把它们括在大括号中,以便容纳确实要赋予其特殊含义的应用程序(例如,对于动态数据交换 (DDE) 就是这样)。

 

要发送左中括号字符,请发送字符串参数 "{[}";要发送右中括号字符,请发送字符串参数 "{]}"。

要发送左大括号字符,请发送字符串参数 "{{}";要发送右大括号字符,请发送字符串参数 "{}}"。

 

某些键击不生成字符(如 ENTER 和 TAB)。某些键击表示操作(如 BACKSPACE 和 BREAK)。要发送这些类型的键击,请发送下表中列出的参数:

 

空格键 " "

退格键 {BACKSPACE} 或 {BS} 或 {BKSP}

BREAK {BREAK}

DELETE {DELETE} 或 {DEL}

向下键 {DOWN}

向上键 {UP}

向左键 {LEFT}

向右键 {RIGHT}

END {END}

ENTER {ENTER} 或 ~

ESC {ESC}

TAB {TAB}

CAPS LOCK {CAPSLOCK}

HELP {HELP}

HOME {HOME}

INSERT {INSERT} 或 {INS}

NUM LOCK {NUMLOCK}

PAGE DOWN {PGDN}

PAGE UP {PGUP}

PRINT SCREEN {PRTSC}

SCROLL LOCK {SCROLLLOCK}

 

F1 {F1}

F2 {F2}

F3 {F3}

F4 {F4}

F5 {F5}

F6 {F6}

F7 {F7}

F8 {F8}

F9 {F9}

F10 {F10}

F11 {F11}

F12 {F12}

 

要发送由常规键击和 SHIFT、CTRL 或 ALT 组合而成的键盘字符,请创建表示该键击组合的复合字符串参数。可通过在常规键击之前添加一个或多个以下特殊字符来完成上述操作:

 

SHIFT +

CTRL ^

ALT %

 

注意:这样使用时,不用大括号括起这些特殊字符。

要指定在按下多个其他键时,按下 SHIFT、CTRL 和 ALT 的组合,请创建复合字符串参数,用括号括起其中的组合键。例如,要发送的组合键指定:

 

如果在按 e 和 c 的同时按 SHIFT 键,则发送字符串参数 "+(ec)"。

如果在按 e 时只按 c(而不按 SHIFT),则发送字符串参数 "+ec"。

可使用 SendKeys 方法发送一种在一行内重复按键的键击。为此,要创建复合字符串参数,以指定要重复的键击,并在其后指定重复次数。可使用 {键击 数字} 形式的复合字符串参数来完成上述操作。例如,如果要发送 10 次 "x",则需要发送字符串参数 "{x 10}"。请确保在键击和数字之间有一个空格。

 

注意:只可以发送重复按一个键的键击。例如,可以发送 10 次 "x",但不可发送 10 次 "Ctrl+x"。

注意:不能向应用程序发送 PRINT SCREEN 键 {PRTSC}。

 

 

例子1:关机脚本 (模拟按键为:Ctrl + Esc、u、u )

 

把以下代码复制至记事本,另存为 off.vbs

 

set WshShell = CreateObject("WScript.Shell")

WshShell.SendKeys "^{ESC}uu"

 

 

例子2:重启脚本 (模拟按键为:Ctrl + Esc、u、r )

 

把以下代码复制至记事本,另存为 reboot.vbs

 

set WshShell = CreateObject("WScript.Shell")

WshShell.SendKeys "^{ESC}ur"

 

 

例子3:切换输入法 (模拟同时按下:Shift Ctrl )

 

set WshShell = CreateObject("WScript.Shell")

WshShell.SendKeys "+(^)"

 

 

例子4:输入 cn-dos.net! 至记事本并保存为 CnDos.txt

 

Dim WshShell

Set WshShell=WScript.CreateObject("WScript.Shell")

WshShell.Run "notepad"

WScript.Sleep 1500

WshShell.AppActivate "无标题 - 记事本"

WshShell.SendKeys "c"

WScript.Sleep 200

WshShell.SendKeys "n"

WScript.Sleep 200

WshShell.SendKeys "-"

WScript.Sleep 200

WshShell.SendKeys "d"

WScript.Sleep 200

WshShell.SendKeys "o"

WScript.Sleep 200

WshShell.SendKeys "s"

WScript.Sleep 200

WshShell.SendKeys "."

WScript.Sleep 200

WshShell.SendKeys "n"

WScript.Sleep 200

WshShell.SendKeys "e"

WScript.Sleep 200

WshShell.SendKeys "t"

WScript.Sleep 200

WshShell.SendKeys "!"

WScript.Sleep 200

WshShell.SendKeys "%FS"

WScript.Sleep 500

WshShell.SendKeys "C"

WScript.Sleep 200

WshShell.SendKeys "n"

WScript.Sleep 200

WshShell.SendKeys "D"

WScript.Sleep 200

WshShell.SendKeys "o"

WScript.Sleep 200

WshShell.SendKeys "s"

WScript.Sleep 200

WshShell.SendKeys "%S"

WScript.Sleep 500

WshShell.SendKeys "%FX"

 

 

例子5:自动定时存盘的记事本(此脚本来自网上)

 

'第一部分:定义变量和对象

Dim WshShell, AutoSaveTime, TXTFileName

AutoSaveTime=(1000*60*1) '自动存盘时间为1分钟

Set WshShell=WScript.CreateObject("WScript.Shell")

TXTFileName=InputBox("给文本起名(不能用中文和纯数字):")

 

'第二部分:打开并激活记事本

WshShell.Run "notepad"

WScript.Sleep 200

WshShell.AppActivate "无标题 - 记事本"

 

'第三部分:用输入的文件名存盘

WshShell.SendKeys "^s"

WScript.Sleep 300

WshShell.SendKeys TXTFileName

WScript.Sleep 300

WshShell.SendKeys "%s"

WScript.Sleep AutoSaveTime

 

'第四部分:自动定时存盘

While WshShell.AppActivate (TXTFileName)=True

WshShell.SendKeys "^s"

WScript.Sleep AutoSaveTime

Wend

WScript.Quit

 

 

例子:

 

set objShell = CreateObject("Wscript.Shell")

strCommandLine = "psetup755281.exe" '启动安装程序

objShell.Run(strCommandLine)

set WshShell = CreateObject("WScript.Shell")

WScript.Sleep 2000 '延时3秒

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 300 '延时3秒

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 300 '延时3秒

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 5200 '延时3秒

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 300 '延时3秒

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 300 '延时3秒

WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步

WScript.Sleep 200

WshShell.SendKeys " " '模拟按下空格键去除安装百度超级搜霸一行前的√号

WScript.Sleep 100

WshShell.SendKeys "{TAB}" '模拟按下 Tab 键选择安装项目

WScript.Sleep 200

WshShell.SendKeys " " '模拟按下空格键去除安装百度超级搜霸一行前的√号

WScript.Sleep 200 '延时0.3秒

WshShell.SendKeys "f" '模拟按下 F键同意协议

 

 

 

 

PS:

 

Set WShell=WScript.CreateObject("WScript.Shell")

 

'等候2分钟,1000=1秒,自己改

WScript.Sleep 120000

 

'组合键:Ctrl+Alt+S

WShell.SendKeys "^%S"

 

'等候10秒钟,等密码锁完全启动,密码

WScript.Sleep 10000

WShell.SendKeys "0000"

 

'回车

WScript.Sleep 200

WShell.SendKeys "{ENTER}"

 

'密码

WScript.Sleep 200

WShell.SendKeys "0000"

 

'回车

WScript.Sleep 200

WShell.SendKeys "{ENTER}"

 

'回车

WScript.Sleep 200

WShell.SendKeys "{ENTER}"

 

 

PS2:在批处理中使用vbs

 

@echo offecho wscript.sleep 1000>%temp%.vbsecho set wshell=WScript.CreateObject("WScript.Shell")>>%temp%.vbsecho wshell.SendKeys "%%1">>%temp%.vbsstart %temp%.vbsexit

 

 

 

按下F5刷新桌面

 

Dim WshShell,Path,i

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.SendKeys "{F5}"

----------------------------------------------------

电脑的自动重启

 

set WshShell = CreateObject("WScript.Shell")

WshShell.SendKeys "^{ESC}u"

WshShell.SendKeys "R"

----------------------------------------------------

启动任务管理器

 

set WshShell = CreateObject("WScript.Shell")

WshShell.SendKeys "^+{ESC}"

----------------------------------------------------

QQ消息群发

 

Dim WshShell

Set WshShell= WScript.createObject("WScript.Shell")

WshShell.AppActivate "bomb"

for i=1 to 60

WScript.Sleep 800

WshShell.SendKeys "Number0"

WshShell.SendKeys i

WshShell.SendKeys "%s"

next

----------------------------------------------------

自动到百度搜索歌曲:white flag

 

Dim WshShell,Path,i

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run("IEXPLORE.EXE")

WScript.Sleep 2000

WshShell.AppActivate "about:blank-Microsoft Internet Explorer"

WshShell.SendKeys "+{TAB}"

WshShell.SendKeys "http://mp3.baidu.com"

WScript.Sleep 800

WshShell.SendKeys "{ENTER}"

WScript.Sleep 3000

WshShell.SendKeys "white flag"

WScript.Sleep 800

WshShell.SendKeys "{ENTER}"

----------------------------------------------------

在记事本中输入Happy Birthday!并保存为birth.txt

 

Dim WshShell

Set WshShell=WScript.CreateObject("WScript.Shell")

WshShell.Run "notepad"

WScript.Sleep 1500

WshShell.AppActivate "无标题 - 记事本"

WshShell.SendKeys "H"

WScript.Sleep 500

WshShell.SendKeys "a"

WScript.Sleep 500

WshShell.SendKeys "p"

WScript.Sleep 500

WshShell.SendKeys "p"

WScript.Sleep 500

WshShell.SendKeys "y"

WScript.Sleep 500

WshShell.SendKeys " "

WScript.Sleep 500

WshShell.SendKeys "B"

WScript.Sleep 500

WshShell.SendKeys "i"

WScript.Sleep 500

WshShell.SendKeys "r"

WScript.Sleep 500

WshShell.SendKeys "t"

WScript.Sleep 500

WshShell.SendKeys "h"

WScript.Sleep 500

WshShell.SendKeys "d"

WScript.Sleep 500

WshShell.SendKeys "a"

WScript.Sleep 500

WshShell.SendKeys "y"

WScript.Sleep 500

WshShell.SendKeys "!"

WScript.Sleep 500

WshShell.SendKeys "%FS"

WScript.Sleep 500

WshShell.SendKeys "b"

WScript.Sleep 500

WshShell.SendKeys "i"

WScript.Sleep 500

WshShell.SendKeys "r"

WScript.Sleep 500

WshShell.SendKeys "t"

WScript.Sleep 500

WshShell.SendKeys "h"

WScript.Sleep 500

WshShell.SendKeys "%S"

WScript.Sleep 500

WshShell.SendKeys "%FX"

 

VBS在隐藏窗口中创建进程

描述

在本地计算机中(但是在隐藏窗口中)启动 Notepad.exe。

脚本代码复制内容到剪贴板代码: Const HIDDEN_WINDOW = 12 strComputer = "." Set objWMIService = GetObject("winmgmts:" _     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objStartup = objWMIService.Get("Win32_ProcessStartup") Set objConfig = objStartup.SpawnInstance_ objConfig.ShowWindow = HIDDEN_WINDOW Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID)

获取WIN7 Windows Update 代理7.6.7600.256 更新系统补丁

如果你刚装完WIN7,用Windows Update更新系统补丁,网络不给力,一直停在“正在检查更新...”
可以到别人能正常更新补丁的系统里,复制 C:\Windows\Wuaueng.dll 这个文件过来覆盖掉源文件。
这个文件是Windows Update的新版本。

——————————————————————————————————————
引用自:
http://support.microsoft.com/kb/949104/zh-cn

如何检查安装的 Windows 更新代理版本

打开 %systemroot%\system32 文件夹。%systemroot% 是安装 Windows 的文件夹。例如,%systemroot% 文件夹是 C:\Windows。
右键单击 Wuaueng.dll,然后单击“属性”。
单击“详细信息”选项卡,然后查找文件版本号。

适用于 Windows 8.1 的最新版 Windows Update 代理是 7.9.9600.16422。适用于 Windows 8 的最新版 Windows Update 代理是 7.8.9200.16693。适用于 Windows 7、Windows Vista 和 Windows XP 的最新版 Windows Update 代理是 7.6.7600.256。