複製鏈接
請複製以下鏈接發送給好友

ExitWindows

鎖定
ExitWindows同ExitWindowsEx相同。
ExitWindowsEX()函數用來退出、重啓或註銷系統。
外文名
ExitWindows
相同於
ExitWindowsEx
參    數
uFlags
類    別
計算機編程
構造方式
函數

ExitWindows函數原型

BOOLExitWindowsEx(
UINTuFlags, // 關閉參數
DWORDdwReserved // 系統保留,一般取0
);

ExitWindows參數

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函數。

ExitWindows相關資料

ExitWindowsEx函數返回後,啓動了關閉。關閉或註銷。
在關機或登錄操作中,應用程序在允許關閉的時間具體數額內迴應關機請求。如果時間到期時,Windows會顯示一個對話框,允許用户強行關閉應用程序:關閉、重試,或取消關機要求。如果存在EWX_FORCE指定值,Windows會關閉應用程序而不顯示該對話框。
Windows NT中:關閉或重新啓動系統,調用進程必須使用AdjustTokenPrivileges函數使SE_SHUTDOWN_NAME特權。Windows 95中:安全特權,不支持或需要。

ExitWindows例子

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;
}