Невозможно открыть файл об ошибке из-за вызова метода COM в 64-битной ОС - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь использовать ком-компонент в 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] = {"Невозможно открыть входной файл"} в этом исключении мало информации.

Я попытался дать доступ всем в папке. Я не уверен, что делать дальше в этом вопросе.

Буду весьма признателен за любые указания или помощь по решению этой проблемы.

...