注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Windows >> 系统技巧 >> 系统管理 >> Windows正文

Vista开发新特性之你的文件存在哪?

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2007-8-20 【 】 【加入收藏

  其实这不能算是新特性,充其量算是一个Vista开发最佳实践,但是由于种种原因;基本上所有需要进行Vista兼容性升级的软件产品都会遇到这个问题,究其原因当然有历史因素,但是归根到底还是我们的开发不够规范。

  文件系统虚拟重定向 File System Visualization

  关于这一点,我们可以从下面的实验中发现其中的缘由:

  首先使用EditPlus这个工具创建一个文本文件并存放到\Program Files\目录下:
  

Vista开发新特性之你的文件存在哪?
创建一个文本文件

  你会发现程序不会遇到任何问题,文件可以正常存储,但是当你使用文件管理器打开\Program Files\目录的时候,文件却不存在。
  

Vista开发新特性之你的文件存在哪?
文件却不存在

  实际的文件其实是被“重新定向”到了当前用户的AppData目录之下:

  其实,这是Vista中向下兼容的一项功能:文件系统虚拟重定向 (File System Visualization)。其功能就是针对那些还没有兼容Vista的应用程序,把那些对受保护内容的访问从新定向到用户具备访问权限的位置,也就是\Users\UserName\AppData\Local\VirualStore\。在这个文件夹中你可以找到象Program Files, Windows这样的目录;因为普通用户默认情况下没有对这些目录的访问权限,所以相应的访问被定向到了这里。  

Vista开发新特性之你的文件存在哪?
相应的访问被定向

  获取正确的系统路径

  另外一个问题是如何在应用程序中正确的获得这些目录,其实也很简单,使用Environment.GetFolderPath()这个方法,我们可以轻易的获得我们需要的目录:  


Vista开发新特性之你的文件存在哪?(2)
正确的获得这些目录

  上面的listView中使用了以下代码进行填充:

  Vista开发新特性之你的文件存在哪?(2)foreach(System.Environment.SpecialFolder folder in Enum.GetValues(typeof(Environment.SpecialFolder)))

  Vista开发新特性之你的文件存在哪?(2)Vista开发新特性之你的文件存在哪?(2)...{

  Vista开发新特性之你的文件存在哪?(2) ListViewItem folderItem = new ListViewItem(

  Vista开发新特性之你的文件存在哪?(2)Vista开发新特性之你的文件存在哪?(2) new string[]...{folder.ToString(), Environment.GetFolderPath(folder)});

  Vista开发新特性之你的文件存在哪?(2) listView1.Items.Add(folderItem);

  Vista开发新特性之你的文件存在哪?(2)}

  Vista开发新特性之你的文件存在哪?(2)
  这里对Environment.SpecialFolder这个枚举类型进行了遍历,提取出了系统所有的特殊路径。其中值得注意:

  Enviornment.SpecialFolder.ApplicationData:这个值会指向当前用户的AppData中的Roaming目录,这个目录和local的唯一区别就是当你的AD中配置了漫游功能的时候,此目录的内容会被保存在服务器上,并在用户登录其他计算机的时候预先部署。一般是在比较大的企业中为了提供更好的登录环境才使用。

  向下兼容xp文件系统

  说到这里大家肯定有疑问,因为在xp上,用户目录的路径是:

  \Documents and Settings\,而不是\Users\,会觉得有问题,其实Vista在这一点上早就作了准备。
  

Vista开发新特性之你的文件存在哪?(2)
用户目录的路径

  在一个Vista的环境下输入了xp的路径,还是可以正常访问这个xp风格的目录???$?。其实这里Vista借用了一个在unix上使用多年的技术“文件系统链接”来实现这个功能。  

Vista开发新特性之你的文件存在哪?(2)
用户目录的路径

  当你键入dir /a的时候,出现了很多叫做的东西,其实这些就是“文件系统链接”,Vista使用这些链接把xp风格的目录指向到了正确的Vista路径上。以保证xp的应用程序可以正常访问。如果需要的话,可以使用mklink这个命令来创建需要的链接。

  所以,应用程序如果需要向下兼容的话,仍然应该使用xp风格的路径;当然我这里指的是如果你一定需要写明(hard code)这些路径的话;可能的话,尽量使用Environment来得到正确的路径

  我们可以看到,实际上重启管理器只是定义了一个API用来注册应用程序,和一个系统消息来通知应用程序重启;其他的工作都需要我们的开发人员来自己实现,这可能让我们有点失望,但也是可以理解的,因为系统并不知道那些程序状态是重要的,必须要恢复的;这些应该是开发人员的责任。

  另外还有两点很重要的内容,我们在实现重启管理器的时候需要注意:

  1)重启管理器的API只有在Vista的kernel32.dll中才有,所以如果你的应用程序需要提供支持,那么必须在Vista上进行编译;

  2)为了保证我们的应用程序可以在xp及一下系统上正常运行,一定要在调用RegisterApplicationRestart之前检查系统版本,比如使用Environment.OsVersion或者GetVersionEx API,只有当版本号大于6.0.6000的时候才进行调用,否则会造成崩溃。

  • 上一篇Windows:

  • 下一篇Windows:
  • 最 新 热 门
     修改boot.ini 让启动菜单变“彩”
     XP/2003 Server操作系统配置与管理
     黑客又出手 解析新时代的网络攻击技术
     Windows Vista系统服务安全强化策略
     SQL实现其他进制到十进制的转换
     请正确对比Windows和Linux的差异
     60秒就能给Win Vista瘦身2GB
     Vista系统中IE提示证书错误解决方法
     Vista无法正常用输入法的两个解决方法
     深入分析Windows操作系统死机问题
    最 新 推 荐
     XP/2003 Server操作系统配置与管理
     Windows自启动程序的十大藏身之所
     抚平Windows系统的“伤口”
     虚拟内存在vista中还有没有用?
     Windows Vista 创建系统健康报告
     管理Windows Server 2003中的动态链接库
     Windows XP中如何查看计算机开关机记录
     为Windows量身定做的LimitLogin
     在Vista中设置多个本地组策略对象
     被忽略的Windows Server 2008九大特性
    相 关 文 章

    Windows Vista系统服务安全强化策略
    60秒就能给Win Vista瘦身2GB
    Vista系统中IE提示证书错误解决方法
    Vista无法正常用输入法的两个解决方法
    微软:想要免费的Vista旗舰版吗?
    微软欲继续保持强大 Vista需求不热烈
    抓出Vista中IE7不能上网的凶手
    Windows Vista系统防火墙的新亮点
    Windows Vista系统的超多重防护机制
    Vista特殊功能介绍:语音识别

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用