有什么方法可以在 RunOnceEx.CMD 文件中指定的每个组件安装后重新启动计算机?
我正在为 Windows XP 创建一个无人值守的安装盘,它将在系统上安装 Windows 后安装一些默认软件。我正在使用 RunOnceEx.cmd 文件来定义需要安装的软件,我想要的是在安装每个软件后重新启动我的系统。
谢谢并恭祝安康,
有什么方法可以在 RunOnceEx.CMD 文件中指定的每个组件安装后重新启动计算机?
我正在为 Windows XP 创建一个无人值守的安装盘,它将在系统上安装 Windows 后安装一些默认软件。我正在使用 RunOnceEx.cmd 文件来定义需要安装的软件,我想要的是在安装每个软件后重新启动我的系统。
谢谢并恭祝安康,
是的,有。虽然它不是受支持的功能。我做类似的事情。
这可能不是最好的解决方案,但它工作可靠。关键是在开始重新启动过程之前停止 RunOnceEx 进程 ( rundll32.exe
)。如果没有停止,Windows 将在以未知顺序关闭之前停止所有进程。如果该命令意味着在终止 RunOnceEx 进程之前终止我们的“重新启动”进程,它将在被终止之前继续运行 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
,但原理是一样的。