在我的开发机器上和客户环境中,我们都有一个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?我还尝试使用与在本地计算机上使用的域用户相同的域用户运行二进制文件。
为什么两台计算机/环境之间存在这种差异?
答案 0 :(得分:0)
.NET 4.X似乎是随Windows安装的。 IT人员使用“添加/删除Windows功能” UI安装.NET 2.x和3.x。我以前曾尝试使用失败的Microsoft Web安装程序来安装它们。安装.NET 2.x和3.X之后,VB6可执行文件现在可以正确地实例化System.Collections.ArrayList库,并且可以正常工作。我怀疑这意味着.NET 4.x不提供COM接口。