InitiateSystemShutdown

mShutdown Shutdown AdjustToken


InitiateSystemShutdown:
BOOL InitiateSystemShutdown(lpszMachineName,lpszMessage,dwTimeout,fForce App
sClosed,fReboot)
說明:InitiateSystemShutdown函式激活指定的一次關機和重啟動。
參數:lpszMachineName
指定以MULL終止的用來指定要關機的網路名稱的字元串。如果lpszMachineName為NULL,
或指向一個空串,則該函式關掉本地計算機。
LpszMessage
指向一個以MULL終止的指定要顯示在關機對話框中的訊息的字元串。如果不需要訊息,
該參數可以為NULL。
DwTimeout
指定對話框應該顯示的時間(按秒計)。在此對話框顯示期間,可通過調用AbortSyste
mShutdown函式將關機停止。
如果DwTimeout不為零,則InitiateSystemShutdown在指定的計算機上顯示的一個對
話框。該對話框顯示調用此函式的用戶名,顯示由lpszMessage參數指定的訊息,並提示
用戶退出系統。當對話框被創建時發出嘟嘟聲,並保持位於系統中其它視窗的上面。此
對話框可以被移動,但不能被關閉。定時器倒記在強制關機之前剩餘的時間。如果用戶
退出系統,系統立即關閉。否則,當定時器到時間計算機才關機。
如果DwTimeout為零時,計算機關機,但不顯示此對話框,並且不能用AbortSystem
Shutdown函式來停止關機。
fForce AppsClosed
指定對變化未做保存的應用程式是否被強制關閉。如果這個參數為TRUE,則這樣的
應用程式被關閉。如果這個參數為FALSE,則顯示一個對話框以提示用戶關閉這些套用程
序。
FReboot
指定計算機關機之後是否立即重啟。如果這個參數為TRUE,則計算機重啟。如果這
個參數為FALSE,則系統將所有高速快取刷新到磁碟上,清除螢幕,並且顯示一條訊息,
指示關掉電源是安全的。
返回值:如果函式成功,則返回值為TRUE;否則,返回值為FALSE。要獲得擴展錯誤信息
,可使用GetLastError函式。
注釋:要關掉本地計算機,調用進程必須具有SE_SHUTDOWN_NAME特權。要關掉一台遠程
計算機,調用進程必須對此遠程計算機具有的SE_REMOTE_SHUTDOWN_NAME特權。預設情況
下,用戶具有對他們所有登錄計算機的SE_SHUTDOWN_NAME特權,管理員具有對遠程計算
機的SE_REMOTE_SHUTDOWN_NAME特權。
例子:
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//得到進程權標
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES && TOKEN_QUERY,&hToken))
return;
//得到關機的特權的LUID
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;//設定一個特權
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
//得到進程關機的特權
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
::InitiateSystemShutdown(NULL,"關機進行中!",100,true,true);

相關詞條

相關搜尋

熱門詞條

聯絡我們