mfc 관리자 권한(Administrator authority)으로 프로그램 종료(Terminated)하는 소스코드

mfc 관리자 권한으로 프로그램 종료하는 소스코드는?

MFC에서 관리자 권한으로 프로그램을 종료하기 위해서는 관리자 권한을 얻어야 하는데, 이는 UAC (User Account Control)에 의해 제한될 수 있습니다. 따라서 MFC 애플리케이션이 관리자 권한으로 실행되도록 사용자에게 확인을 요청하는 작업이 필요합니다. 일반적으로는 다음과 같은 절차를 따릅니다.

  • 관리자 권한으로 실행될 것인지 확인을 요청합니다.
  • 사용자가 승인하면 프로그램을 다시 실행시킵니다. 이번에는 관리자 권한으로 실행됩니다.
  • 관리자 권한을 얻은 프로그램이 종료되도록 합니다.

아래는 관리자 권한으로 프로그램을 종료하는 예시 코드입니다.


#include <afxwin.h>

#include <Shellapi.h>


BOOL IsElevated()

{

    BOOL fIsElevated = FALSE;

    HANDLE hToken = NULL;


    if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))

    {

        TOKEN_ELEVATION elevation;

        DWORD dwSize;

        if (GetTokenInformation(hToken, TokenElevation, &elevation, sizeof(elevation), &dwSize))

        {

            fIsElevated = elevation.TokenIsElevated;

        }

        CloseHandle(hToken);

    }

    return fIsElevated;

}


BOOL RestartAsAdmin()

{

    SHELLEXECUTEINFO sei = { sizeof(sei) };

    sei.lpVerb = _T("runas");

    sei.lpFile = AfxGetApp()->m_pszExeName;

    sei.hwnd = NULL;

    sei.nShow = SW_NORMAL;


    return ShellExecuteEx(&sei);

}


int main()

{

    if (!IsElevated())

    {

        // 관리자 권한으로 다시 실행시킵니다.

        if (!RestartAsAdmin())

        {

            AfxMessageBox(_T("프로그램을 관리자 권한으로 다시 실행하는데 실패했습니다."));

            return 1;

        }


        return 0;

    }


    // 이곳에 관리자 권한으로 실행되는 프로그램의 코드를 작성합니다.


    return 0;

}

위의 코드는 먼저 IsElevated 함수를 사용하여 현재 프로그램이 관리자 권한으로 실행되고 있는지를 확인합니다. 만약 관리자 권한으로 실행되고 있지 않다면 RestartAsAdmin 함수를 호출하여 관리자 권한으로 다시 실행시킵니다. RestartAsAdmin 함수는 ShellExecuteEx 함수를 사용하여 현재 프로그램을 관리자 권한으로 실행하는 역할을 합니다.

주의: 프로그램을 관리자 권한으로 실행하면 시스템에 영향을 미칠 수 있는 작업을 수행할 수 있으므로 신중하게 사용해야 합니다. 필요한 경우에만 관리자 권한으로 실행하는 것이 좋습니다.

태풍 풀라산(PULASAN) 영향과 이동 경로

태풍 풀라산(PULASAN) 영향과 이동 경로 태풍 풀라산(PULASAN)은 현재 한반도에 큰 영향을 미치고 있습니다. 이 태풍은 강력한 비와 바람을 동반하며, 여러 기상 변화와 위험을 초래할 것으로 예상됩니다. 1. 태풍의 한반도 영향 태풍 풀...