В настоящее время мы находимся в процессе разработки внешних утилит для .net 4.0 на основе предоставленного нам API.
Основная программа, с которой запускаются внешние утилиты, находится на виртуальном сервере. Таким образом, каждый пользователь запускает программу, перейдя в сетевую папку и запустив .exe.
В основной программе есть возможность запуска внешних утилит, которые также запускаются по сетевому пути.
Внешние утилиты подключаются к основной программе через API. Если я не ошибаюсь, dll является компонентом activex.
Все разработчики имеют локальную установку основной программы. Это было необходимо для создания ссылки в .Net. Если установка не была доступна, ссылка не может быть связана.
Для разработчиков инструмент работает.
Но для конечного пользователя, у которого нет полной установки, инструмент не работает, потому что он переходит в реестр и ищет некоторые значения. Они недоступны на станции конечного пользователя.
Конечный пользователь получает это предупреждение при попытке запуска
Невозможно преобразовать COM-объект типа «System .__ ComObject» в интерфейсный тип «MegaMapp.MegaCurrentEnv». Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F}' завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE))
{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F} - это раздел реестра, недоступный для конечных пользователей.
Есть ли способ сообщить инструментам, что они должны загружать ключи реестра с сервера, на котором находится исполняемый файл, а не из локального реестра?