C#Interop-无法创建对象
|
我已经创建了一个C#COM对象,并试图从VBscript(在Windows Scripting Host下)实例化它。
该程序集可以正确生成,依此类推,RegAsm声称它已成功注册。但是,每当我尝试在.vbs脚本中实例化它时,都会得到:
错误:无法创建命名对象
\“ MyProgId.blah \”代码:80040154
我正在运行Win7 x64 Ultimate,该对象是使用VS2010为.NET 3.5构建的。
我还尝试将已编译的DLL复制到Win Server 2003计算机上,并且在那里得到相同的结果。
救命。
另外,值得注意的是:我可以注册但不能实例化任何旧的VB6 COM DLL。 (是的,我正在以管理员身份运行脚本。)
更新资料
仅出于笑容,我创建了一个使用ѭ0that查找和创建对象的测试应用程序:
Type t = Type.GetTypeFromProgID(progId);
if (t == null)
{
Console.WriteLine(\"Couldn\'t create object.\");
}
else
{
var obj = Activator.CreateInstance(t);
Console.WriteLine(\"Successfully created Object: Type is [{0}]\", obj);
Console.WriteLine(\"Calling method [{0}]\\n\\n\", methodName);
var result = t.InvokeMember(methodName, BindingFlags.Default | BindingFlags.InvokeMethod, null, obj, null);
Console.WriteLine(\"Result: {0}\", result);
}
这可以正常工作。但是,尝试从VBscript创建对象仍然失败。
啊
更新,第二
运行SysInternals ProcMon之后,我看到相当多的注册表查询在HKCU\\Software\\Classes\\...
下查找progID和guid,而其中没有提及该对象(当我在RegEdit中查看时)。存在相当多的NAME NOT FOUND
错误。
我尝试注册regasm
的%windir%\\microsoft.net\\framework\\v4...
和framework64
版本,但没有任何效果。
没有找到相关结果
已邀请:
3 个回复
缉康怪
锹缄
览幕堤分