В настоящее время мы разрабатываем внешние утилиты с .net 4.0 на основе предоставленного нам API.Проблемы с запущенной программой из общей папки
Основная программа, с которой запускаются внешние утилиты, расположена на виртуальном сервере. Поэтому каждый пользователь запускает программу, перейдя в сетевую папку и запуская .exe.
В основной программе есть возможность запускать внешние утилиты, которые также запускаются с сетевого пути.
Внешние утилиты подключаются к основной программе через api dll. Если я не ошибаюсь, dll является активным компонентом.
Все разработчики имеют локальную установку основной программы. Это необходимо для создания ссылки в .Net. Если установка не была доступна, ссылка не может быть связана. Для разработчиков инструмент работает.
Но для конечного пользователя, который не имеет полной установки, инструмент не работает, потому что он входит в реестр и ищет некоторые значения. Они недоступны на станции конечного пользователя.
Конечный пользователь получает это предупреждение при попытке запуска
Unable to cast COM object of type 'System.__ComObject' to interface type 'MegaMapp.MegaCurrentEnv'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))
{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F} является ключ реестра, который не доступен для конечных пользователей.
Есть ли способ сообщить инструментам, что они должны загружать ключи реестра с сервера, на котором exe находится, а не из своего локального реестра?
Activex dll - единственный способ общения с программным обеспечением. Таким образом, мы создали программу .net с вызовами api. Невозможно зарегистрировать dll на клиентской машине, поскольку они находятся на сервере. –
Пути UNC могут работать, вы пытались его зарегистрировать? – jgauffin
Регистрация DLL не устраняет эту проблему. –