トップへ

  検索 辞書 交通 地図 天気

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;
}

トップへ他のサンプルプログラムへ

月に2回程度の更新を目標としています

Copyright(c) Masaki Onishi All rights reserved.