// 데브피아에서 퍼왔습니다.
void CReBootDlg::OnBnClickedOk()
{
m_str.SetWindowText("시스템이 특정 작업 처리후 리부팅합니다.") ;
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
{
MessageBox( "Process Failed : Open ProcessToken", "Error",
MB_ICONSTOP );
exit(-1);
}
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid );
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
{
MessageBox("Process Failed : AdjustTokenPrivileges",
"Error",
MB_ICONSTOP);
exit(-1);
}
if (!ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0 ))
{
MessageBox( "Process Failed : ExitWindowsEx",
"Error",
MB_ICONSTOP );
exit(-1);
}
OnOK();
}
'Programming > MFC' 카테고리의 다른 글
API FAQ (0) | 2007.10.10 |
---|---|
GetFileSize (0) | 2007.10.10 |
VC++ 프로젝트 속성( 구성 관리자 ) (1) | 2007.09.05 |
리스트 박스 마지막 줄 표시 (0) | 2007.08.31 |
메모리 릭 찾기 (0) | 2007.08.10 |