DELPHI中調用API函數ExitWindowsEX可以實現系統的關機,註銷,和重啓

關機:ExitWindowsEx(EWX_POWEROFF OR EWD SHUTDOWN,0)

註銷:ExitWindowsEx(EWX_LOGOFF,0)

重啓:ExitWindowsEx(EWX_REBOOT,0)

不過函數ExitWindowsEx在完成系統的關機、註銷、重啓動作之前必須要使應用程序獲得系統相應的權限。

可以在窗體初始化時進行操作:

procedure TForm1.FormCreate(Sender: TObject);

var

hToken : THandle;

Tkp : TTokenPrivileges;

Zero:WORD;

begin

OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or

TOKEN_QUERY,hToken);

LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);

Tkp.PrivilegeCount :=1;

Tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken,False,Tkp,SizeOf(TTokenPrivileges),nil,Zero);

end;

執行以上代碼,應用程序就獲得了系統關機、註銷、重啓的權限了,然後加上ExitWindowsEx(EWX_POWEROFF OR EWD SHUTDOWN,0)就行了。
在xp中運行成功。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章