我正在尝试在64位Windows Server Enterprise中使用com组件。我是COM -world的新手。 我们已经在32位机器上使用这个COM库,它可以很好地工作。
它有一个diff msi可以在32位和64位机器上安装。我安装了64位msi,我假设安装的组件是64位。我不知道是否有办法检查这个。在我看到注册表项时安装后,所有类都在 Wow6432Node 节点下注册。这是什么意思?这是否暗示com类是32位? 我创建了一个使用COM库的测试控制台应用程序,并将平台目标设置为x86(没有这个,类没有正确加载)。以下是我的示例代码(我更改了带有示例名称的命名空间)
Type t = Type.GetTypeFromProgID("xyz.loader");
XYZ.interop.Loader oLoader = (XYZ.interop.Loader)Activator.CreateInstance(type);
XYZ.interop.Doc2X oCvt = null;
string InputFile = @"C:\399-words.docx";
string OutputFile = @"C:\399-words.htm";
int nResult;
try
{
oCvt= XYZ.interop.Doc2X)oLoader.Doc2X;
oCvt.AttributeFile = @"C:\Program Files\Attributes.xml";
oCvt.PreProcessTextBoxes = false;
oCvt.ConvertToX(InputFile, OutputFile, 0, out nResult);
}
catch (Exception exp)
{
error handling logic.
}
此代码运行到最后一行并失败,异常无法访问输入文件。 [System.Runtime.InteropServices.COMException] = {“无法打开输入文件”} 异常中没有太多信息。
我尝试过访问该文件夹上的所有人。我不知道如何进一步处理这个问题。
非常感谢有关如何解决此问题的任何指示或帮助。