ExitWindows

ExitWindows同ExitWindowsEx相同。

ExitWindowsEX()函式用來退出、重啟或註銷系統。

概況

函式原型:

BOOLExitWindowsEx(

UINTuFlags, // 關閉參數

DWORDdwReserved // 系統保留,一般取0

);

參數

uFlags

參數:uFlags

指定關閉的類型。此參數必須有下列值的組合:

EWX_FORCE

強制終止進程。當此標誌設定,Windows不會傳送訊息WM_QUERYENDSESSION和WM_ENDSESSION的訊息給目前在系統中運行的程式。這可能會導致應用程式丟失數據。因此,你應該只在緊急情況下使用此標誌。

EWX_LOGOFF

關閉所有進程,然後註銷用戶。

EWX_POWEROFF

關閉系統並關閉電源。該系統必須支持斷電。

Windows要求:

Windows NT中調用進程必須有 SE_SHUTDOWN_NAME 特權。

Windows 9X中:可以直接調用。

EWX_REBOOT

關閉系統,然後重新啟動系統。

Windows要求:

Windows NT中:調用進程必須有SE_SHUTDOWN_NAME特權。

Windows 9X中:可以直接調用。

EWX_SHUTDOWN

關閉系統,安全地關閉電源。所有檔案緩衝區已經刷新到磁碟上,所有正在運行的進程已經停止。

Windows要求:

Windows NT中:調用進程必須有SE_SHUTDOWN_NAME特權。

Windows 9X中:可以直接調用。

參數:dwReserved

保留,這參數被忽略。一般取0。

返回值

如果函式成功,返回值為非零。

如果函式失敗,返回值是零。想獲得更多錯誤信息,請調用GetLastError函式。

備註

ExitWindowsEx函式返回後,啟動了關閉。關閉或註銷。

在關機或登錄操作中,應用程式在允許關閉的時間具體數額內回應關機請求。如果時間到期時,Windows會顯示一個對話框,允許用戶強行關閉應用程式:關閉、重試,或取消關機要求。如果存在EWX_FORCE指定值,Windows會關閉應用程式而不顯示該對話框。

Windows NT中:關閉或重新啟動系統,調用進程必須使用AdjustTokenPrivileges函式使SE_SHUTDOWN_NAME特權。Windows 95中:安全特權,不支持或需要。

例子

Windows 9X:

ExitWindowsEx(EWX_SHUTDOWN, 0); //關閉系統

ExitWindowsEx(EWX_REBOOT, 0); //重啟系統

Windows NT/2000/XP:

以下給出一個函式

如果不是MFC,加入以下語句在該函式之前

#define BOOL int

#define TRUE 1

#define FALSE 0

如果是,直接加入

BOOL SystemShutdown()

{

HANDLE hToken;

TOKEN_PRIVILEGES tkp;

/* OpenProcessToken() 這個函式的作用是打開一個進程的訪問令牌

GetCurrentProcess() 函式的作用是得到本進程的句柄*/

if (!OpenProcessToken(GetCurrentProcess(),

TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken))

return FALSE;

//LookupPrivilegeValue()的作用是查看系統許可權的特權值,返回信息到一個LUID結構體裡。

LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,

&tkp.Privileges[0].Luid);

tkp.PrivilegeCount = 1; // one privilege to set 賦給本進程特權

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

// AdjustTokenPrivileges()的作用是通知Windows NT修改本進程的權利

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,

(PTOKEN_PRIVILEGES)NULL, 0);

if (GetLastError() != ERROR_SUCCESS) //失敗

return FALSE;

if (!ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0)) //參數在這裡設定。強行退出WINDOWS(EWX_FORCE)。

return FALSE;

return TRUE;

}

相關詞條

相關搜尋

熱門詞條

聯絡我們