VC 如何编程判断UAC是否开启

有时程序中会用到判断Vista/Win7系统UAC是否开启,其实这信息是写在注册表中的,以下是检测代码

BOOL IsEnableUAC()

{
BOOL isEnableUAC = FALSE;
OSVERSIONINFO osversioninfo;
ZeroMemory(&osversioninfo, sizeof(osversioninfo));
osversioninfo.dwOSVersionInfoSize = sizeof(osversioninfo);
BOOL bSuccess = GetVersionEx(&osversioninfo);
if (bSuccess)
{
// window vista or windows server 2008 or later operating system
if ( osversioninfo.dwMajorVersion > 5 )
{
HKEY hKEY = NULL;
DWORD dwType = REG_DWORD;
DWORD dwEnableLUA = 0;
DWORD dwSize = sizeof(DWORD);
LONG status = RegOpenKeyEx(HKEY_LOCAL_MACHINE
, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\")
, 0, KEY_READ, &hKEY);


if ( ERROR_SUCCESS == status )
{
status = RegQueryValueEx(hKEY, TEXT("EnableLUA"), NULL, &dwType, (BYTE*)&dwEnableLUA, &dwSize);


if (ERROR_SUCCESS == status)
{
isEnableUAC = (dwEnableLUA == 1) ? TRUE : FALSE;
}


RegCloseKey(hKEY);
}
}
}


return isEnableUAC;

}


代码源自:http://hi.baidu.com/evihive/item/a3500dcf8fb6863744941656


你可能感兴趣的:(VC 如何编程判断UAC是否开启)