| |
検索
辞書
交通
地図
天気
|
|
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;
}
|
|
|
|