【发布时间】:2010-09-14 01:10:54
【问题描述】:
如何在 C++ 中重新启动? WinSDK中是否有任何规定?我的程序(进程)应该拥有什么样的权利?
【问题讨论】:
-
我不建议你这样做。如果系统在没有他们自己的情况下重新启动,用户可能会讨厌它。
-
在我这样做之前我会问用户(保存你的东西等等等等)......
如何在 C++ 中重新启动? WinSDK中是否有任何规定?我的程序(进程)应该拥有什么样的权利?
【问题讨论】:
ExitWindowsEx Function 可以做到这一点。您需要通过 EWX_REBOOT (0x00000002) 标志来重新启动系统。
此处的重要说明(引自 MSDN):
ExitWindowsEx 函数在启动关闭过程后立即返回。然后关闭或注销异步进行。该函数旨在停止调用者登录会话中的所有进程。因此,如果您不是交互式用户,则该功能可以在不实际关闭计算机的情况下成功。如果您不是交互式用户,请使用 InitiateSystemShutdown 或 InitiateSystemShutdownEx 函数。
您可以根据自己的情况选择合适的功能。
【讨论】:
在调用ExitWindowsEx函数之前你需要enableSE_SHUTDOWN_NAME privilege:
【讨论】:
我认为您有一个很好的理由希望重新启动可能正在运行许多其他应用程序的 PC。
听起来您正在寻找InitiateShutdown(),在dwShutdownFlags 中传递SHUTDOWN_RESTART。
【讨论】: