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;
}

 

posted @ 2017-06-20 15:05  gd_沐辰  阅读(379)  评论(0编辑  收藏  举报