是否关闭Windows上的脚本以删除注册表项?

是否关闭Windows上的脚本以删除注册表项?,windows,batch-file,scripting,registry,Windows,Batch File,Scripting,Registry,编辑:以前更明确的标题是:-“阻止Kontiki的KHOST.EXE在Windows XP上启动时自动加载的最佳解决方案?” 本质上,每当运行应用程序时,它都会设置khost.exe以自动启动Windows。这很烦人,因为它会让我的启动时间增加几分钟,而且我甚至不使用4OD的P2P特性 设置的注册表项包括: Command: C:\Program Files\Kontiki\KHost.exe -all Description: kdx Location: HKU\S-1-5-21-175798

编辑:以前更明确的标题是:-“阻止Kontiki的KHOST.EXE在Windows XP上启动时自动加载的最佳解决方案?

本质上,每当运行应用程序时,它都会设置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\Run\4oD" 
strDelete = objShell.RegDelete(strRoot) 
...

我建议您尝试一下AutoIt(),这是一种免费的脚本语言,旨在自动化Windows GUI和通用脚本

如果您选择使用它,您需要的AutoIt代码将是一个两行代码:

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

您可以将它编译成一个独立的exe,可以在任何计算机上运行(不需要运行库)

我最后做了什么:

1)从任务托盘中停止40D,右键单击退出,终止Khost.exe过程

2)打开启动所有程序管理工具并停止K服务然后将启动类型设置为“手动

3)创建了具有以下内容的ShutdowScript.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在我需要它的时候就可以工作了,我所要做的就是退出它并用脚本关闭它,以停止每次启动电脑时自动启动它

感谢您在这方面的帮助!:)