Win7和Vista的安全机制对于应用程序读取配置文件相关操作的影响(虚拟重定向技术)

今天构造了一个新版本的XXXX软件,并且在纯净的系统下进行了较为全面的测试。
测试中也发现了一些问题。其中包括在Win7测试时程序竟然在另一个目录中创建了文件夹和配置文件,并且进行相关读取操作,
却并没有在指定的路径(程序的安装目录)中进行操作。于是对这个问题进行了多次测试发现,
这个Win7或者Vista的安全机制相关。

        一般在win7系统中会有C:\Users***\AppData\Local\VirtualStore\Program Files的文件夹,其目的在当权限不够时,保证兼容性的做法。

  比如往program files 或某些系统目录要写入东西,会保存配置文件,权限不够,就会被重定向到这里。比如往program files安装软件,一般安装程序会触发UAC提升权限,当然不会有问题。但每次运行program files中安装的程序都触发UAC时不现实的,太烦人了,大多数程序运行时并不会触发UAC,处于受限模式,但往往很多软件运行后又会往自己目录下保存写配置,临时文件之类的,肯定没权限写入。于是都写到了VirtualStore的目录中去了。这里保存的文件大多数是程序运行过后的一些配置或临时文件之类的。
 

         UAC可以迫使开发更加规范,避免往系统目录写东西,配置最好放用户自己的appdata目录,尽量避免普通应用程序以管理员身份运行,除非程序的安装和修改一些系统配置才需要授权,这样才能根本上解决很多安全问题
 

       如果开始几次用户都是按普通的方式运行我们的软件(xxxxxxxx),这个时候用户对于软件的配置信息都是写入到VirtualStore中去,但后来用户又以管理员的身份运行的话,这时程序就会去读取用户安装目录下的配置文件的信息,就会造成信息的不一致。
 
      【这个虚拟重定向技术也会导致 QQ工作异常,表现为如果第一次以完整管理员权限启动QQ,第2次没有以标准用户权限启动,那么第1次的聊天记录将不能够在第2次登陆以后看到。这是因为如果默认安装在 Program Files 目录下,一个标准用户试图往 Program Files 目录下写文件时,系统会自动地重定向到虚拟文件夹C:\Users\\[用户名]\AppData\Local\VirtualStore\Program Files\Tencent\QQ\QQ号里面。但是当以完整管理员权限启动,则 QQ 进程就会拥有往 Program Files 下写文件的权限,这个时候所有的配置信息就会写到C:\Program Files\Tencent\QQ\QQ号目录里面。由于这个问题,会造成QQ本地信息不同步现象的出现。】
 
        如何更好的解决这个文件,是用户的配置信息不丢失,还有待解决。

 

http://blog.csdn.net/qustdong/article/details/7703614

posted @ 2017-01-30 23:07  findumars  Views(457)  Comments(0Edit  收藏  举报