【发布时间】:2019-05-31 10:42:45
【问题描述】:
在我的开发机器和客户环境中,我们有一个 Visual Basic 6 二进制文件可以执行以下操作:
dim x as object
set x = CreateObject("System.Collections.ArrayList")
...它按预期工作(我们可以向它添加项目,获取计数等)。
最近我们安装了一台新的 Windows Server 2012 R2 机器(它具有 .NET 4.X 作为操作系统的一部分)。当我尝试在这台机器上运行相同的 VB6 二进制文件时,上面的行得到错误:
“自动化错误”
如果我添加对 C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb 的引用,它仍然可以在我的本地开发机器上运行
dim x as New ArrayList
x.Add("test")
x.Count ' 1
...但在 2012 服务器上仍然出现自动化错误。
运行二进制文件 (LocalSystem) 的用户是否可能没有使用 DLL 的权限?我还尝试使用我在本地计算机上使用的域用户运行二进制文件。
为什么两台计算机/环境之间存在这种差异?
【问题讨论】:
-
我想也许我只安装了 .NET 64 位,但我在这个目录中确实有几个版本:C:\Windows\Microsoft.NET\Framework
-
有些人建议重新安装 .NET 2.0 或 3.X。但是当我尝试在 Server 2012 R2 上执行此操作时,我只收到一条错误消息,“...无法安装。无法通过 Windows 功能控制面板自动安装或卸载 Windows Server 角色和功能”(尽管事实上我正在手动运行安装程序。
-
根据我的经验,这类问题与 app.config 文件有关。请参阅以下答案:stackoverflow.com/a/47867724/3929185 和 stackoverflow.com/a/41142221/3929185。还可以使用 process hacker 或 procexp 并确定正在调用哪个 .net clr:blogs.msdn.microsoft.com/rodneyviana/2014/12/23/…
-
听起来像是安装问题。尝试修复组件...比较以下注册表项,看看它们在您的工作机器上是否相同:HKLM\SOFTWARE\Classes\CLSID\{6896B49D-7AFB-34DC-934E-5ADD38EEEE39} 和 HKLM\SOFTWARE\Classes\ System.Collections.ArrayList
-
@froque app.config?这是一个VB6可执行文件,没有app.config。
标签: .net vb6 com-interop mscorlib