検索 辞書 交通 地図 天気 |
Windowsの電源を落とす
Windows Visual C++ で Windows の電源を落とすサンプルプログラムです. 2000, XP 以前では,ExitWindowsEx(EWX_POWEROFF, 0); だけでよかったのですが, 2000,XP 以降はプロセストークンを取得してシャットダウンの権限を与える必要があります. #include <stdafx.h> #include <windows.h> int main(int argc, char* argv[]){ HANDLE hToken; TOKEN_PRIVILEGES TokenPri; printf("電源を落とします\n"); // プロセストークンを取得 if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) == FALSE){ return FALSE; } // シャットダウン権限の LUID を取得 if(LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &TokenPri.Privileges[0].Luid) == FALSE){ return FALSE; } // シャットダウン権限を与える TokenPri.PrivilegeCount = 1; TokenPri.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &TokenPri, 0, (PTOKEN_PRIVILEGES)NULL, 0); if(GetLastError() != ERROR_SUCCESS){ return FALSE; } ExitWindowsEx(EWX_POWEROFF, 0); return 0; } |
| ||