![Windows 服务器和常规桌面 Windows 之间的技术区别是什么](https://linux22.com/image/1467364/Windows%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%E5%B8%B8%E8%A7%84%E6%A1%8C%E9%9D%A2%20Windows%20%E4%B9%8B%E9%97%B4%E7%9A%84%E6%8A%80%E6%9C%AF%E5%8C%BA%E5%88%AB%E6%98%AF%E4%BB%80%E4%B9%88%20.png)
我想了解 Windows Server 和常规桌面 Windows 之间的区别的技术细节。特别是 Windows 10 和 Server 2008。
我正在尝试解决我的一个应用程序中的一个问题,它在我们的机器上运行得很好,但在我们客户的服务器上却崩溃了。我完全搞不懂为什么会发生这种情况,正在寻找一些线索。
答案1
正如@Rudolph 提到的艾尔评论,您需要更加具体,这样我们才有更好的机会修复问题。例如错误消息或代码、记录的事件,甚至我们在这里讨论的应用程序类型的一般概念...
不过,我可以简要介绍一下“常规” Windows(客户端)和 Windows Server 之间可能影响兼容性的一些差异。
- IE增强保护模式使 IE 更加安全,但意味着需要使用 IE 加载网页(可能包括嵌入式 IE 框架)的应用程序可能无法运行,因为 EPM 禁用了许多功能以最大限度地减少攻击面。
- 默认情况下,服务器上未安装“桌面”组件(如 Windows Media Player)。这些组件可以安装,但通常不需要在服务器上安装。
- 32 位版本。虽然 Win10 仍可在 32 位平台上使用,但 Windows Server 已不再可用(尽管我认为 Server 2008(初始版本,而不是 R2,后者实际上是一个截然不同的版本)是最后一个 32 位版本)。实际上,这应该无关紧要,但如果由于某种原因您的应用无法在 64 位版本的 Windows 上运行(例如,它需要加载 32 位驱动程序或运行 16 位程序,或者它对文件系统和注册表布局做出了不明智的假设),那么这可能是一个问题。但是,如果它在 64 位 Win10 上运行,它应该在 64 位服务器上运行。
当然,还有另一个区别:简单的发布版本。Win10 是全新的,运行在 NT10.0 内核上,支持所有最新的 API。Server 2008 已有七年历史,大约在 Vista SP1 时发布;它运行在 NT 6.0 内核上,现在已经过时了四个版本。虽然在 6.0 和 10.0 之间的任何给定版本中添加的 API 相对较少(中间版本,只是为了混淆,是 6.1、6.2 和 6.3),但它们确实有些累加。如果您的应用程序没有专门针对 6.0,则它可能正在使用该版本中不存在的 API。
您是否测试过您的应用程序是否可以在 Vista 上运行(或者,如果客户端实际上运行的是 Server 2008 R2,则在 Win7 上测试过该应用程序)?