#include
//功能實現
bool resetwindows(dword dwflags, bool bforce)
;//獲得引數的大小,以提供給getversionex來判斷這是乙個新版本的osversioninfo,還是舊版本的
//新版本是osversioninfoex。擴充版本
osvi.dwosversioninfosize = sizeof(osversioninfo);
if (!getversionex(&osvi))
//檢查作業系統的版本,如果是nt型別的系統,需要提公升系統許可權
if (osvi.dwplatformid == ver_platform_win32_nt)
//判斷是否是強制關機,強制關閉系統程序。
dwflags |= (bforce != false) ? ewx_force : ewx_forceifhung;
//呼叫api
return exitwindow***(dwflags, 0);
}//用來提公升系統許可權
//這是乙個通用的提公升許可權函式,如果需要提公升其他許可權
//更改lookupprivilegevalue的第二個引數se_shutdown_name,即可
bool enableshutdownpriv()
;//開啟當前程式的許可權令牌
if (!openprocesstoken(getcurrentprocess(), token_adjust_privileges | token_query, &htoken))
//獲得某一特定許可權的許可權標識luid,儲存在tkp中
if (!lookupprivilegevalue(null, se_shutdown_name, &tkp.privileges[0].luid))
tkp.privilegecount = 1;
tkp.privileges[0].attributes = se_privilege_enabled;
//呼叫adjusttokenprivileges來提公升我們需要的系統許可權
if (!adjusttokenprivileges(htoken, false, &tkp, sizeof(token_privileges), null, null))
return true;
}int main(int argc, char *argv)
使用c 對windows進行關機 重啟或登出
方法一 呼叫windows自帶的shutdown.exe 缺點 會出現倒計時視窗 system.diagnostics.process.start shutdown.exe r f t 15 shutdown引數含義 r關閉並重啟動此計算機 f 強制執行的應用程式關閉而沒有警告 t 15 延時15秒...
C 實現 Windows 關機 重啟 登出
using system using system.collections.generic using system.text using system.runtime.interopservices dllimport kernel32.dll exactspelling true interna...
讓電腦重啟,關機和登出的c 源程式
using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...