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

在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上。
链接

posted @ 2024-05-17 11:33  sf氰化钠  阅读(472)  评论(0编辑  收藏  举报