1.VS编译链接VC++工程生成文件默认是没有管理员权限的 生成的程序图标是没有盾牌的如图:
如果程序需要在C盘做些写入操作 就必须具有管理员权限 所以需要在工程中进行设置。
注:自己项目的安装程序安装在Win7系统C:\Program Files (x86)下,程序可以正常运行,但在Win10系统下,安装到C:\Program Files (x86)目录下,程序就无法正常运行。猜测win10对安装程序的权限要求更高,所以需要对程序权限进行设置。
工程右键属性 具体如图:
确定后编译链接 生成的程序就有了一个盾牌图标了如图:
运行程序也会弹出管理员权限提示,这样管理员UAC就算设置好了。
注:
我们知道, win7及以上的系统权限控制的非常严格,普通用户在系统目录下没有写的权限,软件经常要写一些配置文件之类的功能就无法操作,
其实特定目录没有写的权限,但软件会运行的好好的,表面没有任何问题,它会自己重定向到C:\Users\当前登录用户名\AppData\Local\VirtualStore\类似这样的文件夹下
而且也能顺利的读取写进去的数据,win7及以上的系统有这样的重定向机制,包括注册表。
其实对我们软件来说,这绝对是个隐形的bug,有时会出现莫名其妙的bug正是由这个引起,所以我们不能任由它这么任性的重定向,有种简单的办法就是鼠标右击后“以管理员身份运行”即可解决该问题,但关键是我们不可能让我们的客户每次都这样右击管理员身份运行吧,所以我们采用这种方法。