Windows 7社区发布活动 -- Windows 7兼容性概述

今天在深圳的Windows 7社区发布活动讲了Session 2 -- Windows 7兼容性概述。今天参会的人员达到60多个,大家也非常积极的讨论。我的Session时间安排上有点紧张,没有留给大家提问的时间,最后由朱兴林回答在几个Session结束后统一回答大家的问题。在抽奖环节,我抽取一等奖的奖品-- windows 7,得主是位女生,各位得主最后有张合影。

我的PPT下载Win7应用开发兼容性.zip

下面简要介绍一下今天的内容:微软的操作系统更新换代仍然按照自己的步伐,从XP到2003、vista再到现在的Windows7,基本是同期2个版本过渡4年,后一个基本是前一个升级版,因此Windows 7实际上是Vista的一个升级版,核心还是沿用Vista SP1。

新操作系统下一些应用程序总会出现一些兼容性的问题,基于win7和vista之间的亲密关系,探讨win7系统兼容性测试,可以先从vista系统开始。

1、运行权限UAC:Vista比XP在很多方面都更安全,比如说抛弃了AppInit_Dlls这个注册表键值,基于用户账户控制(UAC)的安全防护,诊断工具自动监视、新的内核补丁保护(KPP)技术等,这些措施虽然让系统更安全和不容易遭受攻击,却导致许多软件在启动运行时因为权限的分配或系统检查验证的不兼容而出现很多问题。而且UAC经常导致用户确认提升权限,特别是像开发人员这类的用户,开发人既是一个普通人员,更多时候需要管理员的权限运行,导致有非常差的用户体验。Windows 7通过扩展UAC为4级,和Vista的只有两级的配置来说,大大改进了用户体验。

2、文件与注册表虚拟化技术:Vista系统采用了文件与注册表虚拟化技术,它可以使某些在旧版 Windows中必须要求管理员权限的应用程序以非管理员的权限运行(为每个用户帐户分别建立一套应用程序所需的文件与注册表副本。例如:某应用程序需要以管理员权限添加 %Program Files%\程序名称\设置.INI,在使用非管理员权限时,此文件就会自动重定向至 Users\%用户帐户名%\AppData\Local\VirtualStore\Program Files\程序名称\设置.INI;注册表也是一样,应用程序需要以管理员权限修改 HKEY_LOCAL_MACHINE\SOFTWARE\程序名\,使用非管理员权限时,此注册表项就会自动重定向至 HKEY_CURRENT_USER\SOFTWARE\Classes\VirtualStore\MACHINE\Software\程序名\ 注册表项),提升系统安全性。然而并非所有的应用程序都可以完美地支持 Windows Vista 的文件与注册表虚拟化技术,所以在实际应用中可能会遇到各种各样问题,主要有:

2.1、某些应用程序可以以文件与注册表虚拟化方式运行,但需要重新定位通过此应用程序生成的文件。     假设某图像编辑程序可以以文件与注册表虚拟化方式运行,在这个程序中将新图像文件保存至 %ProgramFiles%、%SystemRoot% 等位置后,通过资源管理器却无法在这些位置找到刚生成的文件。这时只能通过到 Users\%用户帐户名%\AppData\Local\VirtualStore 文件夹搜索刚生成的文件。

2.2、某些应用程序可以以文件与注册表虚拟化方式运行,但其升级或卸载程序却不支持文件与注册表虚拟化。     这个问题常见于某些需要经常升级版本的旧版安全防护软件,这些安全软件能够以文件与注册表虚拟化方式运行,但在执行软件升级时却无法将更新的文件保存至 %LocalAppData%\VirtualStore 文件夹、也无法将更新的注册表项添加至 HKEY_CURRENT_USER\SOFTWARE\Classes\VirtualStore。这时,就可能会引起升级失败,或者虽然提示升级成功、但软件版本并没有提升的问题。解决这一问题需要以管理员的身份将更新的新文件及新注册表项添加至 %LocalAppData%\VirtualStore 文件夹及 HKEY_CURRENT_USER\SOFTWARE\Classes\VirtualStore 注册表项。     卸载的问题也是一样,某些应用程序虽然可以以文件与注册表虚拟化方式运行,但卸载时却无法自行删除 %LocalAppData%\VirtualStore 文件夹中的有关数据及 HKEY_CURRENT_USER\SOFTWARE\Classes\VirtualStore 中的有关注册表项,需要以管理员的身份执行清理。

2.3、某些应用程序必须安装在 %ProgramFiles% 中才可以支持文件与注册表虚拟化技术。 这些应用程序安装在非 %ProgramFiles% 文件夹外的其它文件夹时无法应用虚拟化技术、在安装或使用过程中经常出错。

2.4、某些应用程序完全无法以文件与注册表虚拟化技术正常运行。如果我们在安装、升级或使用应用程序时遇到 FileCreateVirtualExclude 事件,即在事件查看器展开“应用程序和服务日志”-“Microsoft”-“Windows”-“UACFileVirtualization”-“Operational”发现事件 ID 为 5000 的 FileCreateVirtualExclude 事件,则表示这个应用程序可能部分或者完全不支持文件与注册表虚拟化技术,必须以管理员权限才能在 Windows Vista 中运行。具体的表现有:无法建立或者找到程序所需的文件夹或文件、写入/复制/加密/压缩某文件夹或文件时出错、应用程序因为无法访问所需的数据而经常提示未知错误,等等。

3、系统服务Session 0 问题:在Windows 7中,操作系统服务的Session 0隔离,阻断了系统服务和用户桌面进程之间进行交互和通信的桥梁。通过Session 0隔离,虽然可以让操作系统更加安全,但是也给系统服务带来了不少兼容性的问题。在Windows XP,Windows Server 2003以及其他更早期的Windows操作系统中,所有操作系统服务和应用程序都在相同的session中运行,这个session由第一个登陆系统的用户所启动。这个session被称为Session 0。在Session 0中同时运行系统服务和应用程序会给操作系统带来一些安全风险,因为服务运行在一个更高的用户权限下,这就使得系统服务成为那些想要提升自己权限的病毒或者恶意软件的攻击目标。从Windows Vista开始,系统服务开始运行在一个被称为Session 0的特殊session中。而应用程序则被跟系统服务隔离开来,这是因为应用程序运行在由用户登录系统后创建的一系列session中。比如,Session 1对应于第一个登陆的用户,Session 2对应于第二个登录系统的用户,以此类推。各个Session之间是相互独立的。在不同Session中运行的实体,相互之间不能发送Windows消息、共享UI元素或者是在没有指定他们有权限访问全局名字空间(并且提供正确的访问控制设置)的情况下,共享核心对象。虽然Session 0隔离可以使得操作系统更加安全,但是,有时候运行于Session 0的系统服务和运行于其他Session的进程之间进行交互和通信时必须的。就像大禹治水,我们不能仅仅把Session 0隔离起来就万事大吉了,我们还需要采用疏导的方式,用更加安全的方式完成Session 0和其他Session之间的交互和通信。

4、程序安装问题:Windows 7 只支持MSI格式的安装程序,MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。2000年,Windows Installer开始进入安装标准化阶段, 目前,为Windows 2000开发的大多数应用程序以前都是针对Windows NT 4或Windows NT 3.51,并且可能是依赖16位组件或NT驱动模式。这些旧式程序为Windows 7的兼容性带来了巨大的挑战。

5、浏览器兼容性问题:很多程序在xp/vista下的IE8没问题,到了win7下就出现问题。Windows 7调用的是内置的IE 8组件。而IE 8合作伙伴版本只会集成到Windows XP Service Pack 2和SP3, Vista/SP1, Windows Server 2003 SP2 和Windows Server 2008/SP1中。所以在win7下的兼容性测试,浏览器兼容是需要重点关注的。

实际上,Windows 7就是Windows Vista的一种升级进化版本。除去测试版本本身的系统问题和相关的硬件驱动程序支持不够,本身自带的IE、DirectX等特性外,软件兼容性测试需关注的点和Vista基本相同。从目前桌面产品在win7下的兼容性测试结果来看,对Vista系统支持比较好的软件,对win7系统的支持也都没什么问题。

2009年9月1日,微软携手众多合作伙伴展示了WINDOWS7在兼容性方面的进展。据介绍,截至到目前为止,国内市场已经有91%的应用程序、92%的硬件设备和95%的网站已经实现了与WINDOWS7的良好兼容。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java职业技术分享

这些保护Spring Boot 应用的方法,你都用了吗?

Spring Boot大大简化了Spring应用程序的开发。它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量,如果你已经习惯了Spring和大量X...

8100
来自专栏大魏分享(微信公众号:david-share)

通过Swagger生成的Json创建Service&自定义开发者界面 | API Management学习第三篇

为Red Hat 3scale API Management管理的API创建API文档,了解Developer Portal和自定义,并探索3scale的其他基...

1.3K20
来自专栏菩提树下的杨过

biztalk 2010 dev版安装小记

曾经以为TFS是微软产品中比较难安装的产品了,当我接触biztalk之后,我承认:我错了! 安装准备: 一、网络环境 要能联网,且速度不能太慢(安装过程中会根据...

21290
来自专栏Guangdong Qi

根据友盟统计错误分析查找线上BUG(工具篇)

今天线上的版本出现了BUG,在启动APP的时候出现闪退情况,但是这种BUG在正常测试的时候没有测试到,怎么解决呢

94510
来自专栏FreeBuf

老式后门之美:五种复古远程控制工具

目前,高级的rootkit技术可以帮助你在渗透中拿到一个shell后进行持久性控制。此外,还有供应商故意提供了一些植入后门,但那就是截然不同的故事了。尽管各式花...

26790
来自专栏杨建荣的学习笔记

一个dg警告发现的硬件问题 (r6笔记第60天)

今天收到一条报警短信,提示dg似乎出了点问题。信息的来源是从v$dataguard_status里面扫描得到的最新错误。 2015-09-15 22:06:19...

31570
来自专栏张戈的专栏

分享Mac/Linux系统Shell终端利器SecureCRT以及注册破解方法

最近双十一剁手,退役了跟了自己 7 年多神舟承运本本,很肉痛的入手了一台 Macbook Air 13.3。在研究新鲜玩意之前,先缅怀一下这个见证我从电脑小白成...

64360
来自专栏杨建荣的学习笔记

Datapump数据迁移前的准备工作(二)(r9笔记第59天)

之前写了一篇文章分析了Datapump迁移数据的一些准备总结,反响还不错。Datapump数据迁移前的准备工作,最近碰到一个场景,根据评估还是使用Datapum...

28940
来自专栏编程一生

J2那几个E和Web基础

15430
来自专栏数据派THU

独家 | 手把手教你用Python 3创建用于机器学习开发的Linux虚拟机(附安装教程、代码)

原文标题:How to Create a Linux Virtual Machine For Machine Learning Development With...

28480

扫码关注云+社区

领取腾讯云代金券