Я пытаюсь использовать ком-компонент в 64-битной Windows Server Enterprise. Я новичок в COM-мире.
Мы уже используем эту библиотеку COM на 32-битной машине, и она отлично работает.
У него есть 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] = {"Невозможно открыть входной файл"}
в этом исключении мало информации.
Я попытался дать доступ всем в папке. Я не уверен, что делать дальше в этом вопросе.
Буду весьма признателен за любые указания или помощь по решению этой проблемы.