查看完整版本: 如何讓 Windows(95 及 NT) 重新開機?

火焰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 =
页: [1]

查看完整版本: 如何讓 Windows(95 及 NT) 重新開機?