调用COM+;时发生自动化错误;Windows 8.1上的组件

调用COM+;时发生自动化错误;Windows 8.1上的组件,windows,vb6,windows-8.1,com+,component-services,Windows,Vb6,Windows 8.1,Com+,Component Services,我有一个遗留的VB6应用程序,它调用用C#(目标是.NET Framework v2)编写的COM+组件进行TCP/IP通信 此操作模式已在各种操作系统中运行,并已成功部署到Windows XP、Vista和7环境中 我刚刚开始在Windows 8.1中测试该软件,当VB6应用程序尝试调用COM+组件时,它会报告“自动错误”。过去这些类型的错误都是由于COM+注册失败造成的,可以通过使用regsvcs.exe手动注册COM+组件来快速纠正 该软件由和MSI安装,MSI还运行一个脚本,该脚本调用r

我有一个遗留的VB6应用程序,它调用用C#(目标是.NET Framework v2)编写的COM+组件进行TCP/IP通信

此操作模式已在各种操作系统中运行,并已成功部署到Windows XP、Vista和7环境中

我刚刚开始在Windows 8.1中测试该软件,当VB6应用程序尝试调用COM+组件时,它会报告“自动错误”。过去这些类型的错误都是由于COM+注册失败造成的,可以通过使用
regsvcs.exe
手动注册COM+组件来快速纠正

该软件由和MSI安装,MSI还运行一个脚本,该脚本调用regsvcs.exe来注册COM+组件。对于Win 8.1,我必须将
regsvcs.exe的路径从以下位置更改为:

C:\Windows\Microsoft.NET\Framework\v2.0.50727
致:

我在Win7和Win8.1上测试了这个安装程序。在Win7上,COM+呼叫工作正常。我在Win8.1中遇到的问题是COM+组件似乎已正确注册,但对该组件的调用仍然失败。组件服务中的一切看起来都很好,COM+应用程序在VB6调用时启动,但返回自动错误,调用失败

注意:我测试的Win7和8.1环境是64位的

在Windows 7和Windows 8.1之间,似乎与组件服务和COM+应用程序有关的某些内容发生了变化,但我似乎找不到解决方案


有没有人经历过类似的事情,或者有人指出了问题的症结所在?

经过几个小时的尝试,我找到了解决办法。我必须启用.NET Framework 3.5(包括Framework 2),并将路径更改为
regsvcs.exe
返回到
C:\Windows\Microsoft.NET\Framework\v2.0.50727

现在,重新安装后,对COM+组件的调用可以正常工作。仍然不确定从v2文件夹和v4文件夹使用此实用程序之间的区别

另一方面,在尝试使用程序和功能中的“打开和关闭Windows功能”功能启用.NET Framework 3.5时,我不断收到错误
0x800F0906

最后,我不得不使用以下命令从安装的Windows 8.1 ISO安装它:

dism /online /Enable-Feature /FeatureName:NetFX3 /All /Source:E:\Sources\SxS /LimitAccess
其中E:\是安装的ISO的驱动器号

我遵循的过程如下所述:
我和你面临着完全相同的问题,我制作了一个用于从Vb6调用的.NET COM互操作DLL。我的软件在所有Windows版本上运行,但有一天我发现一些使用Windows 8的计算机在运行我的软件时出现问题。我得到的错误是自动化错误

经过研究,我发现如果我们在Window8上使用.NET版本v4.0.30319来注册.NET 2.0-3.5程序集。它可能不起作用,我不知道为什么,但可能是不同.NET版本的兼容性,或者是微软的一个新错误。(我知道.NET4.0可以运行.NET2.0程序集,但不知道为什么windows8会出现一些异常)

因此,现在对我来说最好的解决方案是:

1) 在Windows 8上打开.NET 3.5(此解决方案非常耗时,因为您需要在安装程序中提供Windows 8.1 ISO)

2) 为您的应用程序构建两个目标版本的.NET framework。因此,如果您的客户使用Windows 8,安装程序将安装.NET 4.0应用程序版本。如果低于窗口8,则安装.NET 3.5版本

dism /online /Enable-Feature /FeatureName:NetFX3 /All /Source:E:\Sources\SxS /LimitAccess