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

lal*_*lli 9 c++ windows winapi

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

Den*_*sky 13

还有就是ExitWindowsEx函数可以做到这一点.您需要传递EWX_REBOOT(0x00000002)标志才能重新启动系统.

重要说明(来自MSDN):

ExitWindowsEx功能,只要它已经开始了关机过程返回.然后,关闭或注销将异步进行.该函数旨在停止调用者登录会话中的所有进程.因此,如果您不是交互式用户,则该功能可以在不实际关闭计算机的情况下成功.如果您不是交互式用户,请使用InitiateSystemShutdownInitiateSystemShutdownEx函数.

您可以根据具体情况选择合适的功能.


And*_*ers 9

调用之前ExitWindowsEx功能,您需要启用SE_SHUTDOWN_NAME特权:

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


Joh*_*web 5

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

这听起来像你正在寻找InitiateShutdown(),通过SHUTDOWN_RESTARTdwShutdownFlags.