如何在C++中重新啓動? WinSDK中有任何規定嗎?我的程序(過程)必須做什麼樣的權利?如何以編程方式重新啓動?
9
A
回答
12
有可以做到這一點的ExitWindowsEx Function。您需要通過EWX_REBOOT(0x00000002)標誌來重新啓動系統。這裏
重要提示(引自MSDN):
的ExitWindowsEx功能一旦它發起的關機過程返回。關機或註銷然後異步進行。該函數旨在阻止調用方的登錄會話中的所有進程。因此,如果您不是交互式用戶,則該功能可以成功,而不必實際關閉計算機。如果您不是交互式用戶,請使用InitiateSystemShutdown或InitiateSystemShutdownEx函數。
根據您的情況,您可以選擇適當的功能。
+0
謝謝,我會繼續與此。但是我對獲取令牌和所有的東西感到困惑,你能建議任何鏈接去查看它嗎? – lalli 2010-09-13 09:21:42
5
我認爲你有一個非常好的情況,想要重新啓動可能正在運行大量其他應用程序的PC。
這聽起來像你在尋找InitiateShutdown()
,在dwShutdownFlags
通過SHUTDOWN_RESTART
。
8
調用ExitWindowsEx功能之前,您需要enable的SE_SHUTDOWN_NAME privilege:
- OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,...)
- LookupPrivilegeValue
- AdjustTokenPrivileges
- CloseHandle的
相關問題
- 1. 以編程方式重新啓動IIS
- 2. 如何以編程方式重新啓動java web啓動應用程序
- 3. 如何以編程方式重新啓動MVC4項目
- 4. 如何以編程方式重新啓動WAMP或Apache?
- 5. 如何以編程方式重新啓動Azure Web App
- 6. 如何以編程方式重新啓動jar?
- 7. 如何以編程方式重新啓動Finder?
- 8. 如何以編程方式啓動Django
- 9. 如何以編程方式啓動PhoneStateListener?
- 10. 如何以編程方式啓動.pdf?
- 11. 以編程方式刷新/重新啓動當前Tomcat實例
- 12. 以編程方式重新啓動應用程序?
- 13. 以編程方式重新啓動android應用程序
- 14. 以編程方式重新啓動應用程序?
- 15. 以編程方式重新啓動應用程序崩潰
- 16. 以編程方式重新啓動離子應用程序
- 17. 如何在Android中崩潰時以編程方式重新啓動/重新啓動應用程序?
- 18. 如何以編程方式重新啓動單實例應用程序
- 19. 如何以編程方式重新啓動iOS中的iPhone應用程序
- 20. 如何以編程方式關閉節點程序並重新啓動它?
- 21. 在Windows Phone 8.1中以編程方式檢測重新啓動
- 22. 以編程方式重新啓動Android Studio
- 23. 以編程方式重新啓動Azure VM角色(PaaS VM)
- 24. 以編程方式重新啓動Azure上的Web/Api-App
- 25. 以編程方式重新啓動Windows 7計算機
- 26. 以編程方式重新啓動sql server是win7
- 27. 以編程方式重新啓動android設備
- 28. Bluecove:以編程方式重新啓動藍牙堆棧
- 29. 以編程方式重新啓動IIS7(C#)
- 30. 以編程方式重新啓動對話框
我不建議你這樣做。用戶可能會討厭它,如果系統重新啓動,而沒有他們自己做。 – 2010-09-13 05:31:18
我會問我的用戶之前,我這樣做(保存你的東西等等,等等..)... – lalli 2010-09-13 05:32:28