UAC
众所周知,UAC是User Account Control的缩写,其中文翻译为用户帐户控制,其含义可定义为权限令牌。
那么UAC的作用是什么?在计算机扮演一个怎样的角色?
首先,在开始这里输入'UAC'就会出现以下这个界面
从上图可以看到,是一个权限的界面,按程度分“始终提醒”---“从不提醒”。
还有另一熟悉的图,如下:
这个图在Win10系统,就经常看得到。几乎运行每一个程序(包括游戏,QQ等)都会有这个提示。
注意:
能够触发UAC的操作包括:修改Windows Update配置; 增加或删除用户帐户; 改变用户的帐户类型; 改变UAC设置;安装ActiveX; 安装或卸载程序; 安装设备驱动程序; 修改和设置家长控制; 增加或修改注册表; 将文件移动或复制到Program Files或是Windows目录;
关闭UAC
vista用户可以按照以下方法关闭UAC:控制面板→用户帐户→打开或关闭用户账户控制→取消使用用户账户控制(UAC)帮助保护您的计算机。
前面说过UAC可以定义为权限令牌,按照权限的划分可以为:超级管理员权限、管理员权限、用户权限。
这里就会涉及到权限的提升。又可以两种:
第一、自动提升进程的权限
第二、手动提升进程权限(通过函数提升权限)
使用函数(ShellExecuteEx)
以下以第二种为例,代码如下
#include <stdio.h> #include<windows.h> #include<tchar.h> int _tmain(int argc,TCHAR* argv[]) { SHELLEXECUTEINFO sei={sizeof(SHELLEXECUTEINFO)}; sei.lpVerb=TEXT("runas"); sei.lpFile=TEXT("cmd.exe");//add application which you want to run as administrator here sei.nShow=SW_SHOWNORMAL;//without this,the windows will be hiden if(!ShellExecuteEx(&sei)){ DWORD dwStatus=GetLastError(); if(dwStatus==ERROR_CANCELLED){ printf("提升权限被用户拒绝\n"); } else if(dwStatus==ERROR_FILE_NOT_FOUND){ printf("所要执行的文件没有找到\n"); } } return 0; }