Windows上的关闭脚本以删除注册表项?
编辑:以前更明确地标题为:"最佳解决方案,以阻止Kontiki的KHOST.EXE在Windows XP上启动时自动加载?"
本质上,每当运行40D应用程序时,它都会将khost.exe设置为自动通过Windows启动。这很烦人,因为它使我的启动时间增加了几分钟,而且我什至不使用4OD的P2P方面。
设置的注册表项是:
Command: C:\Program Files\Kontiki\KHost.exe -all Description: kdx Location: HKU\S-1-5-21-1757981266-1960408961-839522115-1003\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Name: kdx Setting ID: User: LAPTOP\Me Command: "C:\Program Files\Kontiki\KHost.exe" -all Description: 4oD Location: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Name: 4oD Setting ID: User: All Users
我假设某种启动或者关闭脚本来删除这些注册表项是最好的解决方案,但是我对.vbs或者.bat脚本或者将它们自动运行的位置不满意。在适当的时候。
我知道有一个电视点播监视器应用程序,但是我真的不需要运行另一个进程,我只需要删除注册表项即可,如上所述。
解决方案
为什么不将可执行文件复制到其他名称,并在其位置放置一个什么也不做的exe文件。然后将快捷方式更改为复制并重命名的EXE。如果程序对其名称敏感,则将快捷方式指向VBS文件以临时重命名EXE文件。
对于vb脚本,我们将使用以下内容:
Dim WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") 'repeat the line below for each key to delete WSHShell.RegDelete "[Location of Key]"
只需将代码放入文本文件中,然后将其重命名为shutdown,vbs。
至于何时运行它,如果我们在公司环境中,则可以使用组策略并将其设置为计算机关闭脚本。另外,请参阅此处有关手动添加此页面的信息
另一种方法:
创建一个运行该程序的VBS文件,然后删除注册表项。
Set objShell = CreateObject("WScript.Shell") objShell.Exec("C:\Program Files\Kontiki\KHost.exe") strRoot = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunoD" strDelete = objShell.RegDelete(strRoot) ...
并指出捷径。
我是否应该建议我们尝试一下AutoIt(http://www.autoitscript.com/autoit3/),这是一种免费的脚本语言,旨在自动执行Windows GUI和常规脚本。
如果我们选择使用它,则我们需要的AutoIt代码将是2线:
RegDelete("YourKey", "YourValue"); ShutDown(1);
我们可以将其编译为可在任何计算机上运行的独立exe(无需运行时库)
我最终做了什么:
1)通过右键单击>退出从任务托盘中停止40D,这终止了Khost.exe进程。
2)打开"开始">"所有程序">"管理工具">"服务",并停止KService,然后将"启动类型"设置为"手动"。
3)创建了一个ShutdownScript.vbs,内容如下:
Set SH = CreateObject("WScript.Shell") RemoveRegKey "HKU\S-1-5-21-1757981266-1960408961-839522115-1003\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\kdx" RemoveRegKey "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\kdx" RemoveRegKey "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunoD" Shutdown Set Shell = Nothing Set SH = Nothing WScript.Quit Sub RemoveRegKey(sKey) On Error Resume Next SH.RegDelete sKey End Sub Sub Shutdown() SH.Run "shutdown -s -t 1", 0, TRUE End Sub
4)在我的"开始"菜单中放置脚本的快捷方式,然后使用它来关闭PC。
现在40D可以在我需要的时候工作,而我要做的就是退出它并关闭脚本,以阻止它在每次启动PC时自动启动。
感谢帮助! :)