InitiateSystemShutdown

InitiateSystemShutdown是一種函式,功能是激活指定的一次關機和重啟動。

基本介紹

  • 中文名:InitiateSystemShutdown
  • 用途:激活指定的一次關機和重啟動
  • 返回值:如果函式成功,則返回值為TRUE
  • 函式原型:LPSTR lpMachineName
簡介,函式原型,用途,參數說明,返回值,注釋,例子,

簡介

函式原型

BOOL InitiateSystemShutdownA(
LPSTR lpMachineName,
LPSTR lpMessage,
DWORD dwTimeout,
BOOL bForceAppsClosed,
BOOL bRebootAfterShutdown
)

用途

激活指定的一次關機和重啟動。

參數說明

lpMachineName
指定以NULL終止的用來指定要關機的網路名稱的字元串。如果lpMachineName為NULL,
或指向一個空串,則該函式關掉本地計算機。
lpMessage
指向一個以NULL終止的指定要顯示在關機對話框中的訊息的字元串。如果不需要訊息,
該參數可以為NULL。
dwTimeout
指定對話框應該顯示的時間(按秒計)。在此對話框顯示期間,可通過調用AbortSyste
mShutdown函式將關機停止。
如果dwTimeout不為零,則InitiateSystemShutdown在指定的計算機上顯示的一個對
話框。該對話框顯示調用此函式的用戶名,顯示由lpMessage參數指定的訊息,並提示
用戶退出系統。當對話框被創建時發出嘟嘟聲,並保持位於系統中其它視窗的上面。此
對話框可以被移動,但不能被關閉。定時器倒計在強制關機之前剩餘的時間。如果用戶
退出系統,系統立即關閉。否則,當定時器到時間計算機才關機。
如果dwTimeout為零時,計算機關機,但不顯示此對話框,並且不能用AbortSystem
Shutdown函式來停止關機。
bForceAppsClosed
指定對變化未做保存的應用程式是否被強制關閉。如果這個參數為TRUE,則這樣的
應用程式被關閉。如果這個參數為FALSE,則顯示一個對話框以提示用戶關閉這些套用程
序。
bRebootAfterShutdown
指定計算機關機之後是否立即重啟。如果這個參數為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);

相關詞條

熱門詞條

聯絡我們