[kaze's test] プログラミングメモ |
→目次 |
Windowsをシャットダウンする方法(VC++)
ExitWindowsEx()APIを使って、現在のユーザーをログオフさせたり、Windowsをシャットダウンしたりできます。制御応用の場合は、この機能はよく使われています。Windowsをシャットダウンする前に、シャットダウン権限を有効させる処理が必要です。
void ShutdownSystem_Test()
{
HANDLE hToken;
TOKEN_PRIVILEGES tokenPriv;
BOOL bRet;
//アクセストークンを開く
bRet = OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken);
//シャットダウン権限のLUIDを取得する
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &(tokenPriv.Privileges[0].Luid));
tokenPriv.PrivilegeCount = 1;
tokenPriv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
//シャットダウン権限のLUIDで、シャットダウン権限を有効にする
bRet = AdjustTokenPrivileges(hToken, FALSE, &tokenPriv, 0, NULL, NULL);
//システムをシャットダウンさせる
ExitWindowsEx(EWX_SHUTDOWN, 0);
//現在のユーザーをログオフさせる
//ExitWindowsEx(EWX_LOGOFF, 0);
//システムをシャットダウンした後システムを再起動する
//ExitWindowsEx(EWX_REBOOT, 0);
}
|