症状
在安装 .NET Framework 4.8 后生成0x8001010E RPC_E_WRONG_THREAD的 STA COM 方法调用。
变通办法
方法 1:环境变量
设置以下环境变量:COMPLUS_DisableCCWSupportIAgileObject=1
此方法会影响继承此环境变量的任何环境。 这可能只是单个控制台会话,或者如果全局设置环境变量,可能会影响整个计算机。 环境变量名称不区分大小写。
方法 2:注册表
使用注册表编辑器 (regedit.exe) ,查找以下任一子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework
对于 x64 系统上的 32 位进程,请使用:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework
然后添加以下值名称: DisableCCWSupportIAgileObject 类型:DWORD (32 位) 值 (也称为REG_WORD) 值: 1
可以使用 Windows REG.EXE工具从命令行或脚本环境添加此值。 例如:
reg add HKLM\SOFTWARE\Microsoft\.NETFramework /v DisableCCWSupportIAgileObject /t REG_DWORD /d 1
在这种情况下,使用 HKLM 而不是HKEY_LOCAL_MACHINE。 使用 reg add /? 查看有关此语法的帮助。 注册表值名称不区分大小写。
更多信息
有关此.NET Framework 4.8 运行时更改的详细信息,请参阅:https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/runtime/4.7.2-4.8#net-interop-will-now-queryinterface-for-iagileobject-a-winrt-interface
适用于
在受支持的 Windows 版本上.NET Framework 4.8 上运行的应用程序。