admin 管理员组文章数量: 1184232
在运行程序时,为了在win Vista以上版本弹出UAC窗口,我们往往设置程序不使用管理员权限打开。因为在程序在一定目录下,不使用管理员运行也是能达到自身的目的(不读写磁盘),但在诸如系统盘下,我们的程序可能就运行的不好,需要管理员权限才能正常运行,但在程序中设置了管理员权限运行,用户电脑没关闭UAC的话,运行又会出现烦人的弹窗。所以,我们可以先判断,如果用户电脑有打开UAC,而且程序运行的在磁盘特定位置,我们就用兼容模式启动程序。
if (IsEnableUAC())
{
if (NULL != _tcsstr(szModPath, L"C:\\Windows") || NULL != _tcsstr(szModPath, L"C:\\Program Files") || NULL != _tcsstr(szModPath, L"C:\\Users"))
{
HANDLE hToken = NULL;
GetTokenByName(hToken, L"explorer.exe");
ImpersonateLoggedOnUser(hToken);
if (ERROR_SUCCESS == RegCreateKeyEx(HKEY_CURRENT_USER, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE, NULL, &hKey, NULL))
{
TCHAR szValue[16] = { 0 };
DWORD nLen = sizeof(TCHAR)* 16;
RegQueryValueEx(hKey, szModPath, 0, NULL, LPBYTE(szValue), &nLen);
if (0 == szValue[0])
{
KillProcessByPath(szModPath);
RegSetValueEx(hKey, szModPath, 0, REG_SZ, (BYTE*)L"WINXPSP3", sizeof(TCHAR)* 9);
}
RegCloseKey(hKey);
}
CloseHandle(hToken);
RevertToSelf();
}
}
这样,只是在有开启UAC且在特定磁盘下才会以管理员的模式运行
版权声明:本文标题:UAC不是障碍!一键开启兼容模式享受Adobe Flash Player全功能 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1771491450a3545218.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论