今天构造了一个新版本的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

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

  1. VS调试在Win7(vista系列)操作系统下 HttpListener拒绝访问解决办法

    一. VS调试在Win7(vista系列)操作系统下 HttpListener无法绑定多个 指定IP.端口问题 来自:http://www.cnblogs.com/ryhan/p/4195693.ht ...

  2. 《Windows核心编程》学习笔记(9)– 在win7或者vista系统下提升一个进程的运行权限

    win7或者vista默认运行程序是在受限制的环境下运行的,以减轻病毒对于系统的破坏.那么我们怎样才能提升一个进程的权限以至让它在 管理员模式下运行.当然CreateProcess函数没有提供这个功能 ...

  3. Win7/Win8.1右键菜单技巧:应用程序任意加

    对于Win7.Win8.1老用户来说,日常使用中离不开双击各类第三方应用程序,尤其是常用的记事本.QQ聊天.关机.一键截图等程序,这时我们不妨将这些“右键菜单”,轻松实现一键开启QQ.截图或者关机等功 ...

  4. win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面

    错误一: HTTP Error 500.19 - Internal Server Error配置错误: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的 (ov ...

  5. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换

    作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...

  6. Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6642463 在前面几篇文章中,我们详细介绍了A ...

  7. win7创建 VirtualBox COM 对象失败。 应用程序现在将终止。 Callee RC: E_NOINTERFACE (0x80004002)

    win7创建 VirtualBox COM 对象失败.  应用程序现在将终止.    Callee RC: E_NOINTERFACE (0x80004002) 启动VirtualBox提示这个错误, ...

  8. Java反射机制demo(六)—获得并操作一个类的属性

    Java反射机制demo(六)—获得并操作一个类的属性 获得并操作一个类的属性?! 不可思议啊,一个类的属性一般都是私有成员变量啊,private修饰符啊! 但是毫无疑问,这些东西在Java的反射机制 ...

  9. Win7,Vista UAC下应用程序标注为“需要管理员权限”的四种方法(可以修改注册表)

    [转]Vista UAC下应用程序标注为“需要管理员权限”的四种方法 在Microsoft 的UACBlog里对此有过叙述.总结如下: 首先,如果一个程序被识别为管理员程序时,Vista会在它的图标上 ...

随机推荐

  1. mysql 数据库 添加查询 修改 删除

    cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)   一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行   ...

  2. TensorFlow 实战(二)—— tf.train(优化算法)

    Training | TensorFlow tf 下以大写字母开头的含义为名词的一般表示一个类(class) 1. 优化器(optimizer) 优化器的基类(Optimizer base class ...

  3. node服务器如何部署https证书

    var http = require('http'); var https = require('https'); var path = require('path'); var fs = requi ...

  4. Java中的集合Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap(五)

    Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的ke ...

  5. 使用Restlet Client发送各种Get和Post请求

    在开发web应用时,在对Spring中的Controller进行测试时,需要发送各种get以及post请求进行测试,当然可以自己在浏览器里输入url或者对于测试而言使用Spring提供的MockMvc ...

  6. erlang工作前新手学习指引路线

    Erlang学习总结,新手指引 要具体的写erlang入门技术网上有非常多,我写的肯定没有那些大牛写的好,自己也实习了快一个月,也做一个总结,给后erlang初学兴趣者提供些拙见吧 第一步搭建学习环境 ...

  7. 解决gdal集成libkml的链接错误

    作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库在集成libkml出现一些链接错误: 1>libkmldomD.lib(kml_factory.obj ...

  8. 链表Linked List

    链表Linked List 1. 链表 数组是一种顺序表,index与value之间是一种顺序映射,以O(1)O(1)的复杂度访问数据元素.但是,若要在表的中间部分插入(或删除)某一个元素时,需要将后 ...

  9. yii2.0保留CSS样式的引入

    <link rel="stylesheet" href="http://cdn.staticfile.org/twitter-bootstrap/3.2.0/css ...

  10. Java编程思想里的泛型实现一个堆栈类

    觉得作者写得太好了,不得不收藏一下. 对这个例子的理解: //类型参数不能用基本类型,T和U其实是同一类型. //每次放新数据都成为新的top,把原来的top往下压一级,通过指针建立链接. //末端哨 ...