Windows下的关机脚本如何删除注册表键?

3

编辑:这个问题曾经更明确地命名为:“如何最好地解决在Windows XP启动时自动加载Kontiki的KHOST.EXE?”

基本上,每当运行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脚本或者在哪里放置它们以在适当的时间自动运行。
我知道有一个TV On-Demand Monitor application,但我不需要再运行另一个进程,我只需要按照上述描述删除注册表键。
5个回答

2

最终我做的事情:

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\Run\4oD"

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) 在我的开始菜单中放置一个脚本快捷方式,现在使用它来关闭电脑。

现在当我需要时,40D 将起作用,而我所要做的就是退出它并使用脚本关闭电脑,以防止它在每次启动电脑时自动启动。

感谢您的所有帮助! :)


1
为什么不直接将可执行文件复制到其他名称,并放置一个无操作的exe文件在其位置。然后将您的快捷方式更改为已复制并重命名的EXE。如果程序对其名称敏感,则将您的快捷方式指向VBS文件以临时重命名EXE文件。

1

对于 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的名称。

至于何时运行它,如果您在企业环境中,可以使用组策略并将其设置为机器关机脚本。或者,参见此页面here手动添加它。


1
另一种方法:
创建一个运行程序并删除注册表键的VBS文件。
Set objShell = CreateObject("WScript.Shell") 

objShell.Exec("C:\Program Files\Kontiki\KHost.exe")

strRoot = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\4oD" 
strDelete = objShell.RegDelete(strRoot) 
...

然后将您的快捷方式指向那里。


1

我建议你尝试一下AutoIt (http://www.autoitscript.com/autoit3/),这是一种免费的脚本语言,专门用于自动化Windows GUI和一般脚本编写。

如果你选择使用它,那么你所需的AutoIt代码只需要两行:

RegDelete("YourKey", "YourValue");
ShutDown(1);

而且你可以将它编译成一个独立的exe文件,可以在任何电脑上运行(不需要运行库)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接