火焰555 2007-12-3 10:17
如何讓 Windows(95 及 NT) 重新開機?
Windows 95 重新開機十分簡單,只要呼叫 ExitWindowsEx API 函數就可以了,例如:
API 宣告式:
** Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
** Enum HowExitConst
EWX_LOGOFF = 0 注释: 登出
EWX_REBOOT = 2 注释: 重開機
EWX_SHUTDOWN = 1 注释: 關機
EWX_FORCE = 4 注释: 強制關機
End Enum
呼叫敘述:
Call ExitWindowsEx(how, 0)
注释: how 等於 EWX_LOGOFF 、 EWX_REBOOT 、 EWX_SHUTDOWN 、 或EWX_FORCE
但是這個方法並不能對 NT 關機或重新開機,原因是 NT 比較著重安全性(Security), 而為了讓 NT 關機或重新開機, 則必須在呼叫 ExitWindowsEx 之前, 呼叫 AdjustTokenPrivileges API,而 呼叫 AdjustTokenPrivileges API 之前又有一堆設定值要設定, 唉! 一言難盡,好吧, 就給您一條現成的魚, 請在呼叫 ExitWindowsEx 之前呼叫以下的 AdjustToken 副程式就對了。
--------------------------------------------------------------------------------
AdjustToken 副程式的細節如下:
1. API 的宣告:
Enum HowExitConst
EWX_FORCE = 4 注释: 強制關機
EWX_LOGOFF = 0 注释: 登出
EWX_REBOOT = 2 注释: 重開機
EWX_SHUTDOWN = 1 注释: 關機
End Enum
Const TOKEN_ADJUST_PRIVILEGES =