在Windows上关闭脚本以删除注册表项?

时间:2008-09-21 14:07:24

标签: windows batch-file scripting registry

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

基本上,每当运行 40D 应用程序时,它都会设置 khost.exe 以自动启动Windows。这很烦人,因为它将我的启动时间增加了几分钟,我甚至都没有使用40D的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 个答案:

答案 0 :(得分: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)快捷方式添加到“开始”菜单中的脚本中,现在使用它来关闭PC。

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

感谢所有人对此的帮助! :)

答案 1 :(得分:1)

为什么不将可执行文件复制到其他名称,并在其位置放置do-nothing exe。然后将快捷方式更改为复制并重命名的EXE。如果程序对其名称敏感,则将快捷方式指向VBS文件以临时重命名EXE文件。

答案 2 :(得分: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关于手动添加

答案 3 :(得分: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) 
...

然后指出你的捷径。

答案 4 :(得分:1)

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

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

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

您可以将其编译为可在任何计算机上运行的独立exe(无需运行时库)