青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

關(guān)閉計(jì)算機(jī)就這幾招

注:完全翻譯整理自MSDN。非常簡(jiǎn)單. .

系統(tǒng)ShutDown”屬于Windows系統(tǒng)的一種基本服務(wù)。功能上有關(guān)閉系統(tǒng)注銷用戶鎖定工作站”3中操作。SDK中提供了幾個(gè)函數(shù),來對(duì)此服務(wù)進(jìn)行調(diào)用。

關(guān)閉系統(tǒng)功能使計(jì)算機(jī)可以被安全的關(guān)閉。所有在文件系統(tǒng)里緩沖的內(nèi)容都被強(qiáng)制寫入磁盤。然后,顯示相應(yīng)的對(duì)話框,提示用戶計(jì)算機(jī)將被關(guān)閉或者已經(jīng)準(zhǔn)備好被關(guān)閉。可選的情況一般是計(jì)算機(jī)在關(guān)閉后重起,而不是直接切斷電源。

如果一個(gè)進(jìn)程調(diào)用注銷功能函數(shù),則該進(jìn)程所在的安全環(huán)境范圍內(nèi)的所有進(jìn)程都被終止,使當(dāng)前的用戶退出系統(tǒng)。一個(gè)登陸對(duì)話框被顯示,期待新用戶的登陸。

鎖定工作站功能使你可以在離開計(jì)算機(jī)的時(shí)候,保護(hù)計(jì)算機(jī)屏幕不被未授權(quán)的用戶看到。要解除鎖定,必須用管理員或著授權(quán)用戶的帳號(hào)和密碼重新登陸。

如何關(guān)閉系統(tǒng):

程序可以用兩種方式關(guān)閉本地或遠(yuǎn)程計(jì)算機(jī)
直接關(guān)閉系統(tǒng)
關(guān)閉系統(tǒng)并重啟
Windows NT/2000
及后續(xù)版本: 程序必須擁有SE_SHUTDOWN_NAME權(quán)限才能成功調(diào)用關(guān)閉函數(shù)。


ExitWindowsEx
函數(shù)可以用來關(guān)閉系統(tǒng)。如函數(shù)成功調(diào)用,系統(tǒng)對(duì)每個(gè)窗口發(fā)送WM_QUERYENDSESSION 消息,詢問窗口所屬的程序是否可以被終止。收到此消息的程序應(yīng)該進(jìn)行響應(yīng),清除環(huán)境釋放資源,然后返回TRUE表示自己可以被終止。然而調(diào)用ExitWindowEx的時(shí)候如果指定了EXW_FORCE,則系統(tǒng)強(qiáng)行終止相關(guān)的進(jìn)程并關(guān)閉,這樣可能導(dǎo)致數(shù)據(jù)的丟失。

這是一段在NT/2000中調(diào)用ExitWindowEx關(guān)閉系統(tǒng)的程序(強(qiáng)制關(guān)閉所有程序)。

windows95/98/me中直接調(diào)用ExitWindowEx即可。
-----------------------------------------------------------------------------------------------------------


HANDLE hToken;
TOKEN_PRIVILEGES tkp;

// Get a token for this process.

if (!OpenProcessToken(GetCurrentProcess(),

TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))


Error("OpenProcessToken");

// Get the LUID for the shutdown privilege.

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);

tkp.PrivilegeCount = 1; // one privilege to set

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

// Get the shutdown privilege for this process.

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,

(PTOKEN_PRIVILEGES)NULL, 0);

// Cannot test the return value of AdjustTokenPrivileges.

if (GetLastError() != ERROR_SUCCESS)

error("AdjustTokenPrivileges");

// Shut down the system and force all applications to close.

if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))

error("ExitWindowsEx");

-----------------------------------------------------------------------------------------------------------

Windows NT/2000
以及后續(xù)版本:

InitiateSystemShutdown
函數(shù)可以指定一段延時(shí),在進(jìn)行延時(shí)計(jì)數(shù)的時(shí)候,在將被關(guān)閉的目標(biāo)計(jì)算機(jī)上顯示一個(gè)對(duì)話框,提示用戶盡快注銷。一旦計(jì)數(shù)結(jié)束,系統(tǒng)則立刻被關(guān)閉。在此之前,可以調(diào)用AbortSystemShutdown函數(shù)停止計(jì)數(shù),取消相應(yīng)的關(guān)閉操作。InitiateSystemShutdown也可以指定讓系統(tǒng)重啟。


InitiateSystemShutdown
有一個(gè)參數(shù)LPTSTR lpMachineName,可以指定為網(wǎng)絡(luò)上的計(jì)算機(jī)名字,也就是說,可以關(guān)閉網(wǎng)絡(luò)上的他計(jì)算機(jī)(如果你的用戶在該計(jì)算機(jī)上有足夠的權(quán)限的話)。


以下這個(gè)例子調(diào)用InitiateSystemShutdown函數(shù)關(guān)閉用戶已經(jīng)登陸的本地計(jì)算機(jī)(要關(guān)閉遠(yuǎn)程計(jì)算機(jī)將InitSystemShutdown第一個(gè)參數(shù)由NULL改為正確的計(jì)算機(jī)名字或)。同樣的,也需要先獲得SE_SHUTDOWN_NAME權(quán)限。


---------------------------------------------------------------------------------------------------------

HANDLE hToken; // handle to process token

TOKEN_PRIVILEGES tkp; // pointer to token structure

BOOL fResult; // system shutdown flag

// Get the current process token handle so we can get shutdown

// privilege.

if (!OpenProcessToken(GetCurrentProcess(),

TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))

ErrorHandler("OpenProcessToken failed.");

// Get the LUID for shutdown privilege.

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);

tkp.PrivilegeCount = 1; // one privilege to set

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

// Get shutdown privilege for this process.

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,



(PTOKEN_PRIVILEGES) NULL, 0);

// Cannot test the return value of AdjustTokenPrivileges.

if (GetLastError() != ERROR_SUCCESS)

ErrorHandler("AdjustTokenPrivileges enable failed.");

// Display the shutdown dialog box and start the time-out countdown.

fResult = InitiateSystemShutdown( NULL, // shut down local computer

"Click on the main window and press \

the Escape key to cancel shutdown.", // message to user

20, // time-out period

FALSE, // ask user to close apps

TRUE); // reboot after shutdown


if (!fResult)


{

ErrorHandler("InitiateSystemShutdown failed.");

}
// Disable shutdown privilege.


tkp.Privileges[0].Attributes = 0;


AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,


(PTOKEN_PRIVILEGES) NULL, 0);


if (GetLastError() != ERROR_SUCCESS)


{

ErrorHandler("AdjustTokenPrivileges disable failed.");

}

---------------------------------------------------------------------------------------------
而使用AbortSystemShutoown取消InitialSystemShutdown操作的代碼如下(記住要在延時(shí)結(jié)束前執(zhí)行才能起作用


// Get the current process token handle so we can get shutdown

// privilege.


if (!OpenProcessToken(GetCurrentProcess(),

TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))

{

ErrorHandler("OpenProcessToken failed.");

}


// Get the LUID for shutdown privilege.


LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,

&tkp.Privileges[0].Luid);


tk
p.PrivilegeCount = 1; // one privilege to set


tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;


// Get shutdown privilege for this process.


AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,

(PTOKEN_PRIVILEGES)NULL, 0);


// Cannot test the return value of AdjustTokenPrivileges.


if (GetLastError() != ERROR_SUCCESS)


{

ErrorHandler("AdjustTokenPrivileges enable failed.");

}

// Prevent the system from shutting down.

fResult = AbortSystemShutdown(NULL);

if (!fResult)

{

ErrorHandler("AbortSystemShutdown failed.");

}

// Disable shutdown privilege.

tkp.Privileges[0].Attributes = 0;

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,

(PTOKEN_PRIVILEGES) NULL, 0);

if (GetLastError() != ERROR_SUCCESS)

{

ErrorHandler("AdjustTokenPrivileges disable failed.");

}

break;

關(guān)于用戶權(quán)限(Privileges)的詳細(xì)信息,可以參見MSDN

如何注銷當(dāng)前用戶


可以使用ExitWindowsExitWindowsEx函數(shù)注銷當(dāng)前用戶。

在默認(rèn)的情況下,當(dāng)程序調(diào)用ExitWindowsExitWindowsEx注銷的時(shí)候,WM_QUERYENDSESSION消息也被發(fā)送到系統(tǒng)內(nèi)的每個(gè)窗口。窗口所屬的程序響應(yīng)此消息并且返回TRUE表示可以被關(guān)閉,如果任意一個(gè)程序返回FALSE,注銷操作將被取消。

Windows NT/2000
以及后續(xù)版本:

當(dāng)一個(gè)程序響應(yīng)WM_QUERYENDSESSION并返回TRUE,那么它就會(huì)立刻接受到WM_ENDSESSION消息并馬上結(jié)束,而不管其他的程序是怎么樣回應(yīng)WM_QUERYENDSESSION消息的。

Windows 95/98/Me:
只有當(dāng)系統(tǒng)內(nèi)所有的程序都對(duì)WM_QUERYENDSESSION消息回應(yīng)TRUE之后,他們才會(huì)一起接受到WM_ENDSESSION 消息,然后結(jié)束。

如果要強(qiáng)制關(guān)閉所有的程序,使用ExitWindowsEx函數(shù),指定EXW_FORCE標(biāo)志。如果這樣做,系統(tǒng)不發(fā)送WM_QUERYENDSESSION 消息,而直接終止正在運(yùn)行的程序。

在注銷的時(shí)候,系統(tǒng)還向每一個(gè)進(jìn)程發(fā)送CTRL_LOGOFF_EVENT 控制碼。控制臺(tái)程序可以注冊(cè)一個(gè)HandlerRoutine例程來處理這個(gè)控制碼(使用SetConsoleCtrlHandler函數(shù))。(更多的關(guān)于控制臺(tái)的控制碼,參見MSDN“HandlerRoutine”有關(guān)章節(jié))

綜上所述:只有所有的程序都允許退出,注銷操作才能成功。如果某一個(gè)程序響應(yīng)WM_QUERYENDSESSION并返回FALSE ,用戶則不能被注銷。這樣就可以寫出防止用戶注銷或關(guān)閉的程序(非強(qiáng)制情況)。

//
這是注銷當(dāng)前用戶的代碼

ExitWindows(0, 0);

//
響應(yīng)WM_QUERYENDSESSION消息,如果在彈出消息框里選擇NO,則取消注銷。

case WM_QUERYENDSESSION:

{

int r;

r = MessageBox(NULL, "Shut down?","WM_QUERYENDSESSION", MB_YESNO);

// Return TRUE to allow shutdown, FALSE to stop.

return r == IDYES;

break;

}

如何鎖定工作站

使用LockWorkStation函數(shù)即可鎖定工作站。系統(tǒng)會(huì)顯示一個(gè)鎖定對(duì)話框,告訴用戶此工作站正在使用并且已經(jīng)被鎖定,可以被執(zhí)行鎖定的用戶或管理員解鎖,解鎖的方式是按下CTRL_ALT_DEL并用正確的帳號(hào)和密碼登陸。

LockWorkStation
函數(shù)成功調(diào)用的條件是:

調(diào)用者必須是運(yùn)行在系統(tǒng)交互桌面上的一般進(jìn)程。

必須已經(jīng)有用戶登陸到系統(tǒng)

工作站未被鎖定。

擁有正常窗口和消息隊(duì)列的程序通過WM_QUERYENDSESSIONWM_ENDSESSION消息獲得關(guān)閉通知。

控制臺(tái)則是在其控制流程(Handle Routines)里接受關(guān)閉通知。要注冊(cè)一個(gè)控制臺(tái)控制流程,應(yīng)該使用SetConsoleCtrlHandler函數(shù)

服務(wù)程序在其控制流程里接受退出通知。要注冊(cè)一個(gè)服務(wù)控制流程,應(yīng)該使用RegisterServiceCtrlHandlerEx函數(shù)。

關(guān)閉系統(tǒng)函數(shù)列表

函數(shù)名                函數(shù)功能描述

AbortSystemShutdown
          取消由InitSystemShutdown引起的系統(tǒng)關(guān)閉操作

ExitWindows
              注銷當(dāng)前用戶

ExitWindowsEx
             注銷用戶,關(guān)閉計(jì)算機(jī),關(guān)閉計(jì)算機(jī)并且重啟

InitiateSystemShutdown
         發(fā)起關(guān)閉系統(tǒng)操作,可以選擇關(guān)閉后重啟

InitiateSystemShutdownEx
        同InitiateSystemShutdown,擴(kuò)展的功能是可以在系統(tǒng)
                    事件日志(事件號(hào)6006)中寫入一個(gè)用戶指定的雙字節(jié)碼

LockWorkStation
            鎖定工作站


系統(tǒng)關(guān)閉消息

WM_ENDSESSION

wParam

表示是否要終止程序。如果是TRUE,指令該程序終止,否則是FALSE

lParam

表示用戶注銷還是系統(tǒng)被關(guān)閉。如果此參數(shù)包含ENDSESSION_LOGOFFlParam在這里是按位取值的)位,則表示是用戶注銷

Windows 2000
以及后續(xù)版本:如果lParam ==0,則表示系統(tǒng)被關(guān)閉。

程序收到此消息,如果wParamTRUE,在完成消息處理后,程序隨時(shí)都有可能被關(guān)閉。所以在此消息的處理過程里,應(yīng)該盡量完成程序銷毀前所需要進(jìn)行的工作。

WM_QUERYENDSESSION

wParam

保留,未使用

lParam

WM_ENDSESSION;

DefWindowProc
默認(rèn)返回:TRUE

 

posted on 2008-10-12 16:00 肥仔 閱讀(386) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Windows開發(fā)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲第一页中文字幕| 今天的高清视频免费播放成人| 亚洲欧美精品在线观看| 欧美一区二区三区免费观看视频| 在线精品一区| 狠狠综合久久| 国产中文一区二区三区| 国产精品日韩专区| 国产麻豆日韩欧美久久| 国产精品一区二区三区久久| 国产精品久久国产愉拍| 国产精品国产精品国产专区不蜜| 欧美日韩精品在线视频| 欧美色道久久88综合亚洲精品| 欧美高清不卡| 国产精品入口66mio| 国产精自产拍久久久久久蜜| 国产精品成人av性教育| 国产亚洲欧美aaaa| 亚洲国产精品免费| 亚洲精品在线一区二区| 久久黄色小说| 欧美日韩一区不卡| 国内精品免费在线观看| 亚洲国产精品视频一区| 亚洲午夜未删减在线观看| 久久精品av麻豆的观看方式| 久久久久久**毛片大全| 日韩一二在线观看| 美女图片一区二区| 国产亚洲日本欧美韩国| 黄色日韩网站视频| 欧美亚洲一区二区在线| 亚洲大片免费看| 亚洲欧美日韩另类| 欧美日本不卡高清| 亚洲精品国精品久久99热| 久久精品99久久香蕉国产色戒| 亚洲人体影院| 欧美成人乱码一区二区三区| 黑人巨大精品欧美一区二区小视频| 亚洲最新在线| 一二美女精品欧洲| 欧美国产激情二区三区| 亚洲电影免费在线观看| 久久精品视频在线看| 欧美一区永久视频免费观看| 欧美日韩在线播| 欧美在线视频免费播放| 午夜激情久久久| 国产欧美精品日韩精品| 欧美在线日韩| 久久香蕉国产线看观看av| 黑丝一区二区三区| 亚洲高清视频在线| 久久亚洲国产精品一区二区| 亚洲一区二区三区在线观看视频| 中文久久乱码一区二区| 久久精品国产亚洲a| 亚洲影院在线观看| 国产精品自拍网站| 久久久久综合| 欧美国产日韩精品| 午夜视频久久久久久| 久久久久久久一区二区| 一区二区三区欧美在线观看| 99视频精品| 亚洲片在线观看| 久久成人18免费网站| 亚洲高清免费视频| 一区二区三区四区五区精品| 狠狠色狠狠色综合系列| 一区二区av在线| 国产亚洲网站| 亚洲综合二区| 欧美一级视频| 国产精品伊人日日| 亚洲精品久久| 亚洲欧洲日产国产网站| 久久精品国产久精国产爱| 亚洲无限av看| 国产精品jizz在线观看美国| 亚洲开发第一视频在线播放| 亚洲激情午夜| 欧美成人一区二区三区在线观看 | 欧美激情 亚洲a∨综合| 国产精品美女久久久| 亚洲午夜视频| 老**午夜毛片一区二区三区| 亚洲高清123| 亚洲伊人一本大道中文字幕| 国产精品福利久久久| 亚洲资源在线观看| 久久精品免费| 在线成人激情视频| 欧美激情五月| 亚洲欧美日本精品| 亚洲高清网站| 欧美在线免费一级片| 欧美网站在线| 午夜精品一区二区三区在线视 | 亚洲欧洲日本一区二区三区| 你懂的网址国产 欧美| 亚洲激情视频| 美女黄网久久| 久久久国际精品| 亚洲视频大全| 亚洲精品免费网站| 国产一区二区黄色| 国产日韩欧美在线播放| 欧美日本国产视频| 可以看av的网站久久看| 亚洲欧美日韩国产一区| 免费在线国产精品| 久久九九全国免费精品观看| 一本大道久久a久久精品综合 | 久久狠狠婷婷| 亚洲免费在线观看视频| 亚洲精品免费在线播放| 免费在线成人| 亚洲国产老妈| 99国产麻豆精品| 一区二区三区精品久久久| 91久久午夜| 日韩一级精品视频在线观看| 久久免费视频在线观看| 久久精品人人做人人爽| 欧美在线免费观看亚洲| 久久精品国产一区二区三| 久久精品99无色码中文字幕| 久久成人免费网| 欧美国产第一页| 亚洲欧洲精品一区二区精品久久久| 欧美激情中文字幕乱码免费| 亚洲精品乱码久久久久久久久 | 欧美激情性爽国产精品17p| 国产欧美一区二区三区另类精品 | 欧美在线一级视频| 欧美一级大片在线观看| 久久综合久久88| 99成人精品| 久久久亚洲综合| 国产精品国产自产拍高清av王其| 激情综合五月天| 午夜久久久久| 亚洲免费观看高清完整版在线观看熊| 亚洲视频专区在线| 欧美国产第二页| 在线观看欧美黄色| 欧美在线观看一二区| 99re8这里有精品热视频免费| 午夜精品久久久久久久| 欧美日韩精品免费看| 亚洲国产影院| 欧美v日韩v国产v| 久久亚洲欧美国产精品乐播| 国产欧美在线看| 久久国产精品网站| 亚洲一区999| 宅男噜噜噜66一区二区66| 欧美日韩国产色综合一二三四| 亚洲欧洲日本一区二区三区| 欧美激情第三页| 欧美激情一区二区三区在线视频观看| 樱花yy私人影院亚洲| 欧美国产免费| 欧美日韩伦理在线免费| 9色国产精品| 亚欧成人精品| 亚洲一区在线观看免费观看电影高清 | 欧美国产欧美综合 | 亚洲精品国产精品国自产观看| 亚洲欧美在线一区二区| 国产欧美va欧美不卡在线| 欧美一区二区三区在线| 欧美影院成年免费版| 亚洲成色最大综合在线| 亚洲精品1234| 国产欧美一区二区三区久久| 男女激情视频一区| 国产精品高清网站| 免播放器亚洲一区| 国产精品裸体一区二区三区| 久久亚洲精品伦理| 国产精品久久7| 亚洲国产精品日韩| 激情文学综合丁香| 亚洲午夜高清视频| 在线亚洲自拍| 欧美高清在线一区| 欧美99久久| 亚洲国产精品传媒在线观看| 久久成年人视频| 久久久久久综合网天天| 国产欧美一二三区| 午夜亚洲福利| 亚洲视频免费观看| 久久精品成人一区二区三区 | 老色鬼精品视频在线观看播放| 国产精品一区二区三区成人|