8

我有一个程序,单击 is 按钮后,我希望出现一条消息,告诉用户计算机正在重新启动(使用 ok/cancel 选项),然后计算机将重新启动。然而,更重要的是,我希望它重新启动到安全模式。然后当用户登录到安全模式时,它会在启动时自动启动一个程序。

现在我意识到这可以通过使用 /safemode 以编程方式编辑 boot.ini 来实现,计算机登录后启动程序的任务,然后告诉计算机重新启动。但是,假设最终用户没有足够的 Windows 知识来扭转这些手动设置。

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

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

任何人都可以提出一种方法来执行所有这些疯狂的事情吗?C# 或 vb.net 中的示例会很棒!

先感谢您!

4

2 回答 2

7

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

bcdedit /set {current} safeboot Minimal

然后使您的应用程序成为 Windows 服务并添加一个带有服务名称的注册表项

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\您的服务名称

于 2012-11-07T19:18:29.303 回答
3

您可以通过在注册表中输入一个值来重置安全启动参数,HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 一旦用户重新启动进入安全模式,它将运行

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

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

原始bat命令:

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
于 2012-12-20T15:36:22.053 回答