CPP > Win32 > UAC 확인

Redjini WiKi
< cpp‎ | win32
Acepro (토론 | 기여)님의 2017년 7월 3일 (월) 11:41 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


UAC On/Off 상태를 확인

레지스트리에서 현재 OS에서 UAC On/Off 상태 확인

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System

서브키 아래 EnalbleLUA 값을 확인 하면 UAC 가 On/Off 상태인지 확인 할 수 있음.

EnableLUA : 1 -> UAC 가 켜진 상태.
EnableLUA : 0 -> UAC 가 꺼진 상태.
소스
#include "stdafx.h"
#include <shlwapi.h>
 
#pragma comment(lib, "shlwapi.lib")

BOOL IsUacOn(){    
	DWORD res     = ERROR_SUCCESS;
	DWORD dwType  = REG_DWORD;
	DWORD UacOnOff= 0;
	DWORD sz      = sizeof(DWORD);

	res = SHGetValue(HKEY_LOCAL_MACHINE, 	
			_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"), 
			_T("EnableLUA"), 
			&dwType, 
			&UacOnOff, &sz);

	if(res == ERROR_SUCCESS && UacOnOff == 1){
		return TRUE;
	}else{
		return FALSE;
	}
}
참고

다른 Application을 실행 할 때 CreateProcess 함수를 이용 할 경우 UAC 권한상승을 할 수 없음. 권한 상승이 필요 할 경우 ShellExecute 함수를 이용해야함.