RunOnceEx - 每次安装后重新启动系统

时间:2011-12-06 02:28:35

标签: windows-xp reboot

在RunOnceEx.CMD文件中指定的每个组件安装后,有什么方法可以重新启动计算机吗?

我正在为Windows XP创建一个无人值守的安装盘,它会在系统上安装Windows后安装一些默认软件。我使用RunOnceEx.cmd文件来定义需要安装的软件,我想要的是在安装每个软件后重启系统。

谢谢和问候,

1 个答案:

答案 0 :(得分:0)

是的,有。虽然它不是受支持的功能。我做了类似的事情。

这可能不是最有效的解决方案,但它可靠地运行。关键是在开始重新启动过程之前停止RunOnceEx进程(rundll32.exe)。如果它没有停止,Windows将在以未知顺序关闭之前停止所有进程。如果该命令意味着在杀死RunOnceEx进程之前杀死我们的“Reboot”进程,它将继续在RunOnceEx列表中的下一个项目被杀死之前(因此中止,这不是我们想要的)。

简单的答案,添加一个重启密钥,杀死RunOnceEx进程,然后重新启动:

set %KEY%=HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\009 /ve /D "Reboot.." /f
REG ADD %KEY%\009 /v 1 /D "cmd.exe /c taskkill.exe /f /im rundll32.exe & shutdown /r /t 0 /f" /f

这可能会在下次启动时留下残余密钥。因此,为了使其看起来更干净,请在杀死和重新启动之前添加一条手动删除密钥的指令:

set %KEY%=HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\009 /ve /D "Reboot.." /f
REG ADD %KEY%\009 /v 1 /D "cmd.exe /c REG DELETE %key%\009 /va /f & taskkill.exe /f /im rundll32.exe & shutdown /r /t 0 /f" /f

希望它有所帮助。

编辑:

在XP中,您可能必须使用tskill而不是taskkill,但原则是相同的。