在Windows Server 2008 R2上运行.Net 8应用

在Windows Server 2008 R2上运行.Net 8应用 Windows Server .Net 2008 上运行 Net 应用 R2

在Windows Server 2008 R2上运行.Net 8程序

因为工作需要,要在客户的Windows Server 2008 R2上运行一个WinForm程序。在网上搜了下之前也有人成功运行过.Net Core 3、.Net 6的Asp.Net Core服务,遂直接拿.Net 8来写了。最后装了3个补丁包之后,也是成功运行。这篇笔记主要记录这3个补丁包。

Windows Server 2008 R2 SP1(KB976932)

这是个大补丁包,包含了很多更新,可以说是必装的。
链接

VC_redist.x64

是个MSVC的库。
链接

KB3063858

这个补丁解决的问题是.Net运行时调用一个Win32 API LoadLibraryExA function (libloaderapi.h) 来加载kernel.dll时,路径的问题。

参见该函数的微软文档中关于参数dwFlags的值LOAD_LIBRARY_SEARCH_SYSTEM32的说明:

Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008: 此值需要安装 KB2533623 。

也就是说本来为了解决这个问题是应该安装KB2533623补丁包的,但是该补丁包可能带来远程执行的安全漏洞,已经弃用了。好在辗转搜索后发现,KB3063858补丁也能解决问题。虽然这个补丁的名字是给Windows 7用的,但是因为两个系统的内核版本都是6.1,所以也可以用在Windows Server 2008 R2上。
链接

评论