mfc 에서 관리자 권한을 가져오는 코드는?
MFC에서 관리자 권한을 가져오기 위해서는 주로 UAC(User Account Control)를 사용하거나 Shell 실행 함수를 호출하는 방법이 사용됩니다. 아래는 MFC에서 관리자 권한을 가져오는 두 가지 방법의 예제 코드입니다.
UAC를 사용하는 방법:
BOOL IsRunAsAdmin()
{
BOOL bIsRunAsAdmin = FALSE;
PSID pAdminSID = NULL;
if (CreateWellKnownSid(WinBuiltinAdministratorsSid, NULL, NULL, &pAdminSID))
{
CheckTokenMembership(NULL, pAdminSID, &bIsRunAsAdmin);
FreeSid(pAdminSID);
}
return bIsRunAsAdmin;
}
int main()
{
if (!IsRunAsAdmin())
{
// 관리자 권한으로 실행하지 않은 경우, UAC를 사용하여 관리자 권한으로 재실행
SHELLEXECUTEINFO info = { sizeof(SHELLEXECUTEINFO) };
info.lpVerb = _T("runas");
info.lpFile = _T("YOUR_PROGRAM.EXE");
info.nShow = SW_SHOW;
if (!ShellExecuteEx(&info))
{
// UAC 실행 실패
AfxMessageBox(_T("UAC 실행에 실패했습니다."));
}
}
else
{
// 관리자 권한으로 실행한 경우, 프로그램 실행
AfxMessageBox(_T("프로그램을 관리자 권한으로 실행합니다."));
}
return 0;
}
Shell 실행 함수를 호출하는 방법:
int main()
{
// 관리자 권한으로 실행할 프로그램 경로
CString programPath = _T("YOUR_PROGRAM.EXE");
// ShellExecute 함수를 호출하여 관리자 권한으로 실행
HINSTANCE hInstance = ShellExecute(NULL, _T("runas"), programPath, NULL, NULL, SW_SHOWNORMAL);
if (reinterpret_cast<int>(hInstance) <= 32)
{
// 실행 실패
AfxMessageBox(_T("프로그램을 실행하는데 문제가 발생했습니다."));
}
else
{
// 실행 성공
AfxMessageBox(_T("프로그램이 관리자 권한으로 실행됩니다."));
}
return 0;
}
위의 코드들은 C++ MFC 프로그램에서 관리자 권한을 가져오는 방법을 보여줍니다. 사용자가 관리자 권한으로 실행하지 않은 경우, UAC를 사용하여 재실행하거나 Shell 실행 함수를 호출하여 관리자 권한으로 실행할 수 있습니다.