以安全模式以编程方式重启然后执行程序

时间:2012-11-07 18:47:45

标签: c# vb.net reboot

我有一个程序,点击按钮后,我想要显示一条消息,告诉用户计算机正在重启(使用ok / cancel选项),然后计算机将重启。然而,踢球者,我希望它重新启动到安全模式。然后,当用户登录到安全模式时,它将在启动时自动启动程序。

现在我意识到这可以通过以编程方式使用/ safemode编辑boot.ini来实现,一旦计算机登录就启动程序,然后告诉计算机重启。但是,假设最终用户对Windows不够了解手动反转这些设置。

我想要的是,在最终用户完成Windows安全模式下的程序后,他们只需重新启动计算机并继续使用Windows,而无需手动将任何设置更改为启动到安全模式之前的设置。

注意*将以安全模式运行的程序已经过测试,可以在安全模式下运行。我只需要知道如何让最终用户进入安全模式并自动运行程序,最终用户不知道如何撤消这些设置。

有人能建议一种方法来执行所有这些疯狂吗? C#或vb.net中的一个例子很棒!

提前谢谢!

2 个答案:

答案 0 :(得分:7)

您可以调用运行此命令的进程

bcdedit /set {current} safeboot Minimal

然后使您的应用程序成为Windows服务,并将具有服务名称的注册表项添加到

  

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\了SafeBoot \最小\你的   服务名称

答案 1 :(得分:2)

您可以通过在注册表中添加值HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce来重置safeboot参数 并且一旦用户重新启动到安全模式,它就会运行

我不确定这个部分,但我在批处理文件中使用它来重置bcdedit值,因此它可能会或可能不适用于您的程序。

/v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"`

原始蝙蝠命令:

bcdedit /set {current} safeboot network
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 07