c盘下安装的文件访问权限问题

Win7下安装在c盘的文件在打开时有时候会出现不能访问的问题,此时你应该考虑一下是否是访问权限的问题

如果把程序安装在C:\Program Files下的话不以管理员权限运行,会被UAC(用户帐户控制)阻止访问系统某些功能,比如写入配置文件之类的。有两种方法让程序出发UAC模式一个是直接修改exe属性;另一个是在程序中加入MANIFEST资源。

1. 直接修改exe文件的属性



2.在程序中加入MANIFEST资源:

打开工程,然后右击工程在菜单中选择properties,然后在security标签页下将Enable ClickOnce security settings勾上,然后选择This is a full trust application,然后编译程序就ok了!


 
如果是vs2010的话 app.manifest会自动写入 
 
         

 

第一种方法直接修改exe属性,出发UAC后权限最高,可以直接在根目录下操作文件,但作为应用程序不可能让用户去手动修改,所以只能用第二种方法,但是win7下有一个叫VirtualStore的东东- - 
(C:\Users\**\AppData\Local\VirtualStore)用代码申请的管理员模式的程序 win7会将程序对文件的操作自动转移到C:\Users\**\AppData\Local\VirtualStore\Program Files\YourApp\*.*里,而原先安装在C:\Program Files\YourApp\*.*则没有改变。产生原因大概是这个当权限不够时,保证兼容性的做法。 比如往program files 或某些系统目录要写入东西,会保存配置文件,权限不够,就会被重定向到这里。 比如往program files安装软件,一般安装程序会触发UAC提升权限,当然不会有问题。 
但每次运行program files中安装的程序都触发UAC时不现实的,太烦人了,大多数程序运行时并不会触发UAC,处于受限模式,但往往很多软件运行后又会往自己目录下保存写配置,临时文件之类的,肯定没权限写入program files,所以为了运行不出错就被重定向了,骗过软件认为自己成功写入了,不至于出错。

UAC逼破开发者规范下,避免往系统目录写东西,配置最好放用户自己的appdata目录,尽量避免普通应用程序以管理员身份运行,除非程序的安装和修改一些系统配置才需要授权,这样才能根本上解决很多安全问题。 
比如google的chrome就是灰常标准的安装到了User\**\AppData\Local中~微软也是为了兼容以前无数不规范的软件,才搞出个这么个东西~ 做东西还是要标准的


你可能感兴趣的:(c盘下安装的文件访问权限问题)