Win 10 工作站上的应用程序突然显示需要安装 .net v4.0.30319

Win 10 工作站上的应用程序突然显示需要安装 .net v4.0.30319

我们有几个运行 Windows 10 的计算机,在打开之前可以正常工作的 dotnet 应用程序时突然开始显示错误。其中包括 MSTeams,但同一台计算机上的几个应用程序同时停止工作,因此这是 Windows 的问题,而不是应用程序本身的问题。当您打开应用程序时,它会显示一条消息,指示

此应用程序需要以下 .NET 框架版本之一:V4.0.30319

Windows 10 已安装 .net4,因此您显然不能重新安装它。在 c:\windows\Microsoft.NET\Framework64\ 中,我有一个 v4.0.30319 文件夹,其中似乎有一个有效的 .net 安装。我已将该文件夹与其他机器进行了比较,看起来没问题。

如果我执行以下 Powershell

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)\p{L}'} | Select PSChildName, version

它返回这个:

    PSChildName                      Version
-----------                      -------
v2.0.50727                       2.0.50727.4927
v3.0                             3.0.30729.4926
Windows Communication Foundation 3.0.4506.4926
Windows Presentation Foundation  3.0.6920.4902
v3.5                             3.5.30729.4926
Client                           4.8.09037
Full                             4.8.09037
Client                           4.0.0.0

这似乎又没问题。4.8 版本号在其他机器上有所不同

因此,看起来好像有些东西已经被修改了,从而阻止了.net 版本检测正常工作。

我尝试通过 dism 进行修复。KB5033910 是 .net 和 win10 的 CU,我认为它可能会重置一些东西,但显然 windows10.0-kb5033910-x64-ndp48_b1a3e722dbcd8d88b845314b8e9bf5e8fd9b6904.msu 不适用于 windows 10。自己想想吧。

有人见过这个问题或者知道针对.net 编译的应用程序如何检测.net 吗?

编辑:MS 工具 CLRVER.exe 返回以下输出:

Microsoft (R) .NET CLR Version Tool  Version 4.8.9032.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Versions installed on the machine:
v2.0.50727
v4.0.30319

如果我通过以下方式启用 .net 激活日志记录

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\CLRLoadLogDir

然后,当我运行 dfsvc.exe 工具时,结果日志显示

13904,209391.187,Parsing config file: c:\windows\Microsoft.NET\Framework64\v4.0.30319\dfsvc.exe.config
13904,209391.187,Config File (Open). Result:00000000
13904,209391.187,Config File (Read). Result:00000000
13904,209391.187,Found config file: c:\windows\Microsoft.NET\Framework64\v4.0.30319\dfsvc.exe.config
13904,209391.187,UseLegacyV2RuntimeActivationPolicy is set to 0
13904,209391.187,Config file includes SupportedRuntime entry.  Version: v4.0, SKU: client
13904,209391.187,Found a supportedRuntime tag in the config file
13904,209391.187,ERROR: None of the listed supported runtimes are installed on the machine or can be used to satisfy this request.

答案1

我自己解决了这个问题,但方法并不令人满意。我修复 .net 4 的方法都没有任何效果。作为最后的手段,我尝试在一台正常运行的机器上导出 hklm\software\Microsoft.netframework 和 hklm\software\wow6432node\microsoft.netframework。在有问题的机器上,我导入了这两个文件中的第一个,一切恢复正常。

我还没有尝试调查到底是哪个注册表设置搞砸了这个问题,但没有必要导入 wow6432node 分支。这只影响了几台机器,所以我没有更多的实验。如果其他人看到这个并弄清楚确切的设置是什么,我会很感兴趣。

我还应该提到,我使用了 Roger Zanders Reg2CI 工具将注册表设置导出到 Powershell 脚本。直接使用 .reg 文件可能就足够了。

相关内容