Windows API機能
Posted: 2009年1月26日(月) 11:06
// 126.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include <Windows.h>
void ShutdownWindows(BOOL bReboot, BOOL bForce);
int main(UINT ShutDownWindows)
{
ShutDownWindows(TRUE,TRUE);//void ShutdownWindowsを呼び出して再起動を行う(ここが駄目な箇所)
}
// [引数]
// bReboot : 終了後に再起動する場合はTRUE
// bForce : プロセスを強制的に打ち切る場合はTRUE
//
// [返値]
// 終了指示を発行した : TRUE
// 終了指示が失敗した : FALSE
void ShutdownWindows(BOOL bReboot = FALSE, BOOL bForce = FALSE)
{
DWORD ret;
HANDLE hProcess;
HANDLE hToken;
LUID Luid;
TOKEN_PRIVILEGES tokenNew, tokenPre;
UINT nFlag;
hProcess = GetCurrentProcess();
OpenProcessToken(hProcess,
TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &Luid);
tokenNew.PrivilegeCount = 1;
tokenNew.Privileges[0].Luid = Luid;
tokenNew.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tokenNew,
sizeof(tokenPre), &tokenPre, &ret);
if (bReboot) {
nFlag = EWX_REBOOT; // 再起動
} else {
nFlag = EWX_POWEROFF; // 電源OFF
}
if (bForce) {
nFlag |= EWX_FORCE; // プロセス強制終了
}
ExitWindowsEx(nFlag, 0); // シャットダウン処理
return;
}
ShutdownWindowsを呼び出して再起動を行う処理が上手くいきません。どなたか教えてください
//
#include "stdafx.h"
#include <Windows.h>
void ShutdownWindows(BOOL bReboot, BOOL bForce);
int main(UINT ShutDownWindows)
{
ShutDownWindows(TRUE,TRUE);//void ShutdownWindowsを呼び出して再起動を行う(ここが駄目な箇所)
}
// [引数]
// bReboot : 終了後に再起動する場合はTRUE
// bForce : プロセスを強制的に打ち切る場合はTRUE
//
// [返値]
// 終了指示を発行した : TRUE
// 終了指示が失敗した : FALSE
void ShutdownWindows(BOOL bReboot = FALSE, BOOL bForce = FALSE)
{
DWORD ret;
HANDLE hProcess;
HANDLE hToken;
LUID Luid;
TOKEN_PRIVILEGES tokenNew, tokenPre;
UINT nFlag;
hProcess = GetCurrentProcess();
OpenProcessToken(hProcess,
TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &Luid);
tokenNew.PrivilegeCount = 1;
tokenNew.Privileges[0].Luid = Luid;
tokenNew.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tokenNew,
sizeof(tokenPre), &tokenPre, &ret);
if (bReboot) {
nFlag = EWX_REBOOT; // 再起動
} else {
nFlag = EWX_POWEROFF; // 電源OFF
}
if (bForce) {
nFlag |= EWX_FORCE; // プロセス強制終了
}
ExitWindowsEx(nFlag, 0); // シャットダウン処理
return;
}
ShutdownWindowsを呼び出して再起動を行う処理が上手くいきません。どなたか教えてください