Почему завернутая COM-библиотека C# ищет свой файл конфигурации в каталоге Windows SysWOW64\System32? ⇐ C#
Почему завернутая COM-библиотека C# ищет свой файл конфигурации в каталоге Windows SysWOW64\System32?
У меня есть старое приложение Pascal/Delphi (#1), зарегистрированное в Windows. Это исполняемый файл COM-компонента. У меня также есть еще одно старое приложение Delphi (№2), которое вызывает этот COM-компонент, обернув и объявив типы в DLL, и проделав всю магию, необходимую для выполнения вызовов. Это работает хорошо. Разумеется, все это 32-битные приложения.
Я ссылался на тот же исполняемый файл COM (№1) в консольном приложении, предназначенном для x86 (32-разрядной версии), щелкнув правой кнопкой мыши проект и добавив ссылку COM. Я выбрал библиотеку COM из списка зарегистрированных COM-компонентов в Windows (без перехода к exe-файлу №1).
Это добавило типы, обернуло COM-компонент и позволило мне вызывать его из консольного приложения C#. Однако это не удается, поскольку зарегистрированный COM-компонент ищет свой файл конфигурации в C:\Windows\SysWow64, а не в каталоге программных файлов COM-компонента (опять же, COM-компонент представляет собой исполняемый файл для установленного устаревшего приложения, № 1). .
Я запустил монитор процесса и увидел, как другое старое приложение Delphi (#2) вызывает компонент COM, и все работает так же, за исключением того, что когда компонент COM обращается к своему файлу конфигурации, он ищет его в «c:\program files». ", где он установлен (место установки № 1). Когда мое приложение вызывает его, компонент COM пытается получить доступ к конфигурации в c:\windows\syswow64. Что вызывает разницу в рабочем каталоге в этом случае?
У меня есть старое приложение Pascal/Delphi (#1), зарегистрированное в Windows. Это исполняемый файл COM-компонента. У меня также есть еще одно старое приложение Delphi (№2), которое вызывает этот COM-компонент, обернув и объявив типы в DLL, и проделав всю магию, необходимую для выполнения вызовов. Это работает хорошо. Разумеется, все это 32-битные приложения.
Я ссылался на тот же исполняемый файл COM (№1) в консольном приложении, предназначенном для x86 (32-разрядной версии), щелкнув правой кнопкой мыши проект и добавив ссылку COM. Я выбрал библиотеку COM из списка зарегистрированных COM-компонентов в Windows (без перехода к exe-файлу №1).
Это добавило типы, обернуло COM-компонент и позволило мне вызывать его из консольного приложения C#. Однако это не удается, поскольку зарегистрированный COM-компонент ищет свой файл конфигурации в C:\Windows\SysWow64, а не в каталоге программных файлов COM-компонента (опять же, COM-компонент представляет собой исполняемый файл для установленного устаревшего приложения, № 1). .
Я запустил монитор процесса и увидел, как другое старое приложение Delphi (#2) вызывает компонент COM, и все работает так же, за исключением того, что когда компонент COM обращается к своему файлу конфигурации, он ищет его в «c:\program files». ", где он установлен (место установки № 1). Когда мое приложение вызывает его, компонент COM пытается получить доступ к конфигурации в c:\windows\syswow64. Что вызывает разницу в рабочем каталоге в этом случае?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение