金庸群侠传x客栈奖励:关于WIN7 权限及VirtualStore

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 08:02:23

关于WIN7 权限及VirtualStore

分类:VC基础2010-12-06 10:591067人阅读评论(3)收藏举报

win7下,个人的配置文件会自动保存在C:/Users/***XX/AppData/Local/VirtualStore/ProgramFiles/MyApp/***.ini里,而原先安装在C:/ProgramFiles/MyApp/***.ini则没有改变,产生这样的转存原理如下:

 

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

而本来的目录下可能无法找到这些文件,但会出现一个兼容性文件夹,点了就可以跳到VirtualStore中的对应目录,一般开UAC的才会遇到这个,刚装好就关闭UAC就不会出现了。


这属于98开始,2000虽然有完善的权限级别,可惜习惯了人人管理员,等于摆设。
UAC逼开发者规范下,避免往系统目录写东西,配置最好放用户自己的appdata目录,尽量避免普通应用程序以管理员身份运行,除非程序的安装和修改一些系统配置才需要授权,这样才能根本上解决很多安全问题,否者人人管理员间谍流氓简直就是畅通无阻啊,随时可以对系统为所欲为,防不胜防。
不过为了兼容以前无数不规范的软件,才搞出个这么个东西。

 

 

现在遇到的问题是,我写了个OCX控件,来对本地ini配置文件进行修改,通过IE调用次OCX控件,发现修改时会改到C:/Users/***XX/AppData/Local/VirtualStore/ProgramFiles/MyApp/***.ini,而读取时会到C:/ProgramFiles/MyApp/***.ini里去读,导致读取不一致,只能通过右键以管理员身份打开IE,后调用OCX控件,则只会在C:/ProgramFiles/MyApp/***.ini里读取,这样不会发生错误,目前在寻找解决的办法。

 

 

找了几天,后来把IE工具里Internet选项,安全标签里的启用保护模式不勾选,则OCX控件没有问题了,可以自动跳转到virtualstore读取INI配置文件,可以通过控件在系统目录下新建文件夹等,而当启动保护模式时,这些都无法做到,会出错。

 

附上IE保护模式的说明如下“

      谈到Windows Vista的IE 7安全特性,必须首推其保护模式功能。这个Feature的来头可不小,据说是盖茨亲自点将,可见其重要性。

  IE保护模式实际上依赖于Windows Vista三大安全特性:UAC(用户帐户保护)、MIC(强制完整性检测)和UIPI(用户界面特权隔离),这也是为什么独立版本的IE 7无福享受的原因。

  通俗的来说,保护模式可以让IE运行在最低的特权级别下,比其他任何进程都低。运行在保护模式下的IE进程、IE进程里的插件、还有网页里的代码,根本没有权限干坏事。IE进程“不得入内”的地方包括:用户配置文件夹、HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER等,难怪恶意代码会感到处处掣肘!