当我登录 Windows Server 2008 R2 时,出现错误
oobe.exe-.NET 框架初始化错误。
无法找到运行此应用程序的运行时版本。
造成此错误的原因是什么以及如何修复它?
编辑:
我认为这个错误出现在我改变了 COMPLUS_ENABLE_64bit 标志。它可能与此有关吗?
答案1
可执行文件可能带有标记,表明它只能在特定的“位数”下运行。您可以使用coreflags.exe 实用程序每个 .Net SDK 中都有该功能。
可以找到 .net 2.0 的 sdk这里。
配置 DLL 或可执行文件的主流模式有 3 种:
- AnyCPU(将 jit 到任何可用的 CPU,优先使用 64 位):/32BIT+ /ILONLY+
- x86:(禁用 64 位编译)/32BIT+ /ILONLY-
- x64:(禁用 32 位编译)/32BIT- /ILONLY-
通常 AnyCPU 是最佳选择,除非您正在执行 COM 互操作或以其他方式调用本机代码,在这种情况下位数应该与本机代码的编译位数相同。
可能您不应该尝试更改第三方 DLL 的位数,因为如果它不是默认的“AnyCPU”,则可能有一个很好的理由(通常是本机卫星 DLL 可以执行任何事情,例如生成 PDF 文件或使用其他本机第三方库)。
编辑:按照 IBM 的建议禁用 64 位运行时是相当过分的,您可以使用 coreflags 实用程序仅对此应用程序执行相同操作,同时保持框架的其余部分和所有相关应用程序完好无损。通过运行以下命令恢复更改:
C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Ldr64.exe Set64