윈도우 7 UAC가 활성화되어 있다면 결정하기 위해 레지스트리를 확인할 수 있습니다, 그러나 다만이 트릭을 사용하는 경우이 기능은 항상 UAC가 활성화되어 있는지 돌아 윈도우 8과C++을 사용하여 Windows 8에서 UAC가 활성화되었는지 여부를 프로그래밍 방식으로 검색하는 방법? 윈도우 XP /에서
BOOL FileOps::IsUacEnabled()
{
LPCTSTR pszSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
LPCTSTR pszValueOn = _T("EnableLUA");
DWORD dwType = 0;
DWORD dwValue = 0;
DWORD dwValueSize = sizeof(DWORD);
if (ERROR_SUCCESS != SHGetValue(HKEY_LOCAL_MACHINE, pszSubKey, pszValueOn,
&dwType, &dwValue, &dwValueSize))
{
return FALSE;
}
return dwValue != 0;
}
작동하지 않습니다
HANDLE hToken;
TOKEN_ELEVATION_TYPE elevationType;
DWORD dwSize;
OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken);
GetTokenInformation(hToken, TokenElevationType, &elevationType, sizeof(elevationType), &dwSize);
bool bUAC_Enabled = false;
switch (elevationType) {
case TokenElevationTypeDefault:
wprintf(TEXT("\nTokenElevationTypeDefault - User is not using a split token.\n"));
break;
case TokenElevationTypeFull:
wprintf(TEXT("\nTokenElevationTypeFull - User has a split token, and the process is running elevated.\n"));
break;
case TokenElevationTypeLimited:
wprintf(TEXT("\nTokenElevationTypeLimited - User has a split token, but the process is not running elevated.\n"));
break;
}
if (hToken) {
CloseHandle(hToken);
}
어떤 아이디어 : 윈도우 8 다른 방법에서 나뿐만 아니라 실패 봤어요?
Windows 8에서는 UAC를 비활성화 할 수 없으므로 OS 버전을 확인하십시오. 그보다 더 실용적인 것은 아닙니다. –
Windows 8에서 UAC를 항상 활성화하지 않았습니까? 왜 항상 '사실'을 반환하는지 (그렇지 않은 경우 ... 어떻게 체크를 끄려고 했습니까?) – Ryan