본문 바로가기

Programming/MFC

시스템 재부팅 코드

// 데브피아에서 퍼왔습니다.

 

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