記得剛學(xué)C++的時(shí)候,喜歡研究API,當(dāng)時(shí)同事有一個(gè)高手,寫(xiě)了段代碼,我在寫(xiě)程序的時(shí)候,莫明妙的,機(jī)器突然關(guān)掉了!我正在納悶的時(shí)候,我聽(tīng)到了他的奸笑! 原來(lái)是他干的,后來(lái)我研究了好久InitiateSystemShutdown這個(gè)API函數(shù),了解被作弄的原理了,因?yàn)槲业臋C(jī)器加入了Windows的域,而且域的超級(jí)用戶(hù)我也設(shè)置成對(duì)我本機(jī)有Administrator權(quán)限,所以,他才有機(jī)可乘!后來(lái)寫(xiě)了以下這段代碼,讓他也在工作的時(shí)候被我遠(yuǎn)程關(guān)機(jī),爽啊!學(xué)了新東西,又以其人之道還施彼身!
//ShutDownSystem函數(shù)是關(guān)本地,自己的機(jī)器
BOOL CAlarmClockDlg::ShutDownSystem() { HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) AfxMessageBox("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); if(GetLastError()!= ERROR_SUCCESS) AfxMessageBox("AdjustTokenPrivileges"); // Shut down the system and force all applications to close. if(!ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE, 0)) { return FALSE; } else { return TRUE; } } //shutdownHost這個(gè)就是遠(yuǎn)程關(guān)機(jī)的C++函數(shù)了!hostName可以是機(jī)器IP,也可以是機(jī)器名字! BOOL CAlarmClockDlg::shutdownHost(CString hostName) { 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)) AfxMessageBox("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) AfxMessageBox("AdjustTokenPrivileges enable failed."); // Display the shutdown dialog box and start the time-out countdown. fResult = InitiateSystemShutdown("192.168.100.245", // shut down local computer "Click on the main window and press the Escape key to cancel shutdown.", // message to user 1, // time-out period FALSE, // ask user to close apps //注意這一段API調(diào)用! FALSE); // reboot after shutdown if (!fResult) { AfxMessageBox("InitiateSystemShutdown failed."); } // Disable shutdown privilege. tkp.Privileges[0].Attributes = 0; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0); if (GetLastError() != ERROR_SUCCESS) { AfxMessageBox("AdjustTokenPrivileges disable failed."); } return TRUE; }
-
訂閱
-
-
-
美國(guó)VPS/域名/服務(wù)器/VPN等代購(gòu):http://shop63846532.taobao.com
-
文章分類(lèi)
-
隨機(jī)文章
- 濟(jì)南IT人才現(xiàn)狀
- Web服務(wù)器性能/壓力測(cè)試工具h(yuǎn)ttp_load、webbench、ab、Siege使用教程
- Yahoo 1.99$ 超便宜域名2009年3月18日驗(yàn)證有效
- Dreamweaver使用正則表達(dá)式批量替換網(wǎng)頁(yè)內(nèi)容
- Linux下的軟件開(kāi)發(fā)工具
- 8月29日
- Yahoo域名轉(zhuǎn)入name.com
- seo點(diǎn)滴
- 在線(xiàn)測(cè)試:選擇合適你的 Linux 發(fā)行版(Linux Distribution Chooser)
- 5個(gè)Everbox邀請(qǐng)碼,要的留言
-
最近評(píng)論
-
ocrmaker:
我來(lái)推薦一個(gè)手機(jī)端也可以使用的免費(fèi)在線(xiàn)文字圖片識(shí)別的工具:ocrmaker,絕對(duì)不坑... -
黃智豪:
抱歉我說(shuō)錯(cuò)了,是字的顏色很不好看... -
黃智豪:
這字體很不好看... -
博聞雅記:
博主,php升級(jí)的時(shí)候能不能改成中國(guó)節(jié)點(diǎn)呢?... -
aarondd:
可以下載?... -
lazy:
thx... -
semirHR:
管用!3Q... -
licess:
@knd2, 轉(zhuǎn)入是續(xù)一年... -
不能安裝該軟件因?yàn)槟壳安豢稍谲浖路?wù)器:
不能安裝該軟件因?yàn)槟壳安豢稍谲浖路?wù)器 安裝一會(huì)出現(xiàn)這個(gè)錯(cuò)誤,請(qǐng)問(wèn)這個(gè)是怎么回事呢? 10.... -
knd2:
你好,樓主,我在godaddy上的域名還有3個(gè)月到期,現(xiàn)在轉(zhuǎn)到name是不是這3個(gè)月就失效了。還有我...
-
ocrmaker:
-
links
-
Archives
- 2022年六月
- 2016年六月
- 2015年六月
- 2014年六月
- 2013年十二月
- 2013年十月
- 2013年七月
- 2013年六月
- 2013年五月
- 2013年四月
- 2013年三月
- 2013年二月
- 2013年一月
- 2012年十二月
- 2012年十一月
- 2012年六月
- 2012年五月
- 2012年四月
- 2012年二月
- 2011年十二月
- 2011年十一月
- 2011年十月
- 2011年九月
- 2011年六月
- 2011年五月
- 2011年四月
- 2011年三月
- 2011年二月
- 2010年十二月
- 2010年十一月
- 2010年十月
- 2010年九月
- 2010年八月
- 2010年七月
- 2010年六月
- 2010年五月
- 2010年四月
- 2010年三月
- 2010年二月
- 2010年一月
- 2009年十二月
- 2009年十一月
- 2009年十月
- 2009年九月
- 2009年八月
- 2009年七月
- 2009年六月
- 2009年五月
- 2009年四月
- 2009年三月
- 2009年二月
- 2009年一月
- 2008年十二月
- 2008年十一月
- 2008年十月
- 2008年九月
- 2008年八月
- 2008年七月
- 2008年六月
- 2008年五月
- 2008年四月
- 2008年三月
- 2008年一月
- 2007年十二月
- 2007年十一月
- 2007年十月
- 2007年九月
- 2007年八月