如何以编程方式重新启动?

时间:2010-09-13 05:28:34

标签: c++ windows winapi

如何在c ++中重启? WinSDK有什么规定吗?我的程序(流程)必须具备哪种权利?

3 个答案:

答案 0 :(得分:13)

ExitWindowsEx Function可以做到这一点。您需要传递 EWX_REBOOT (0x00000002)标志才能重新启动系统。

此处的重要提示(引自 MSDN ):

  

ExitWindowsEx 函数在启动关闭过程后立即返回。然后,关闭或注销将异步进行。该函数旨在停止调用者登录会话中的所有进程。因此,如果您不是交互式用户,则该功能可以在不实际关闭计算机的情况下成功。如果您不是交互式用户,请使用 InitiateSystemShutdown InitiateSystemShutdownEx 功能。

您可以根据自己的情况选择合适的功能。

答案 1 :(得分:9)

在致电ExitWindowsEx功能之前,您需要enable SE_SHUTDOWN_NAME privilege

  1. OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,...)
  2. LookupPrivilegeValue
  3. AdjustTokenPrivileges
  4. CloseHandle的

答案 2 :(得分:5)

我认为你有一个很好的理由想要重新启动可能正在运行许多其他应用程序的PC。

听起来你正在寻找InitiateShutdown(),在SHUTDOWN_RESTART中传递dwShutdownFlags