总的来说微软在更新每个操作系统版本的时候都尽量保持向前的兼容性但是也有一些例外如果一系列为提升性能所做的更新要兼顾之前版本就会影响整体性能时就无法一改而论了举个例子微软之前移除了对位应用的兼容支持 windows 的客户端及服务器版本有很多更新将带来兼容性方面的巨大挑战这些新挑战中的一部分没法由管理员来解决它们只能由应用的初始开发者处理 大多数变更在称为windows和windows server开发者预览兼容手册的更新文档中都有解释它对大多数程序兼容性问题都有详细说明对当前版本存在的问题提供了解决方案 以下是几个已知的程序兼容性故障报告 系统版本数字是的老问题又以新的面貌出现了因为windows采用特殊的版本号一些老的应用程序可能会因此出现问题windows 为自己定义的版本号是这些程序可以用当前windows提供的兼容模式来运行(例如在程序快捷方式的兼容性页中)但是如果你是一个程序开发者你就必须更加小心确认版本号码微软建议小心使用检查版本信息功能(用大于不等于或者一个特殊的版本号) 无头的服务器应用这是最重要的几个变化之一因为新版windows server(主要是server core)的设计不单运行无头程序还要支持那些没有图形界面的程序在性能较差的环境中图形界面可以卸载(例如在资源被广泛分享的虚拟机中)或者出于其它原因比如减少服务器被攻击可能性的考虑也可以进行类似操作 一些服务器程序尽管它们可能并不在无图形界面环境中运行任何命令行版本应用理论上都应该运行得很好但是一旦它被用图形界面呈现给用户之后就可能无法很好地运行了现在没有很好的办法来解决这个图形界面引起的问题所以它在大多数时候仅能保持无图形界面版本的应用 如果你准备在server core版本操作系统上运行所有应用那么你应当充分测试来确认它在无图形界面环境下能如期望般表现良好如果结果相反同时如果你对程序编写有一定了解那么你需要将现有的代码迁移到server core平台下并且重新确认那些WIN API和NET CLR能被core系统所支持 NET框架Windows 将NET 框架放进它默认程序安装包中但是并不包含NET如果你有一些程序明确只支持版本不仅仅是独立的程序还有那些基于该版本NET的网站程序这种情况下你需要手动地添加老版的NET幸运的是这不会引起大的兼容性问题因为不同版本的NET可以并存独立运行微软文档有一些说明介绍了如何在不触动windows更新情况下手动地添加NET 框架 因为NET已经是windows run time(WinRT)的一部分Word允许开发者用metro视图创建应用并可用沙漏程序模型迅速创建程序如果你想要为windows 更改或者升级服务器应用并且你已经了解C#或者C++那么这个任务并不困难但是文档中还是有一些值得探索的东西 K磁盘扇区这个说来更像是一个硬件问题而不是程序问题但是它仍然值得我们注意目前市场上主流的新磁盘一般使用K扇区替代旧的字节扇区设计K扇区驱动器也就是所谓高级格式磁盘在为字节扇区设计的程序上经常会出现一些奇怪的问题它没有很好地考虑向前兼容的问题Windows 增加了一个新的API用来查询文件扇区大小然后用命令行工具支持脚本查询卷大小 没有签名的内核驱动如果你有一些程序不管是第三方的或者是厂商自带的使用到内核驱动windows server出于安全考虑严格限制对内核驱动的使用并将其视为流氓软件对设备使用内核驱动最大的变化包括标准扩展固件接口(UEFI)安全启动功能它用于保护机器免受流氓软件攻击UEFI安全启动是服务器的可选项不过建议启用它如果你想在服务器上使用UEFI安全启动项你最好用可信任的证书来为内核驱动做验证否则建议禁用安全启动项 |