Как я могу предоставить доступ к своему приложению COM +? - PullRequest
0 голосов
/ 09 июня 2011

Я создал приложение сервера COM +, и вызывающий не может получить к нему доступ - когда он пытается создать экземпляр COM-объекта (CoCreateInstance()) из этого приложения, в системном журнале появляется следующее сообщение:

Настройки разрешений для конкретного приложения не предоставляют разрешения локальной активации для приложения COM-сервера с CLSID {идентификатор класса COM-объекта здесь} и APPID {идентификатор приложения приложения COM + здесь} для пользователя MACHINENAME \ administrator SID (SID здесь) с адреса LocalHost (используя LRPC). Это разрешение безопасности можно изменить с помощью инструмента администрирования служб компонентов.

Кажется, что единственный способ настроить доступ к COM + - это использовать ролей , но приложение не проверяет "принудительную проверку доступа", поэтому, похоже, не должно быть никаких ограничений. И все же объект не будет создан.

Как разрешить определенному пользователю доступ к определенному приложению COM +, чтобы он мог создавать экземпляры объектов оттуда?

1 Ответ

1 голос
/ 21 июня 2011

Первое, что вы должны сделать, это проверить, можете ли вы создать этот объект вне приложения. Я использую VBScript здесь;

dim vvv
set vvv= CreateObject ("CoCreateInstance()")

if isnull(vvv) then
            msgbox "null"
else
            msgbox "not null"
end if

Если вы не можете создать объект, то, возможно, существует проблема с .dll, и вам лучше всего просто стереть компонент с реестра и полностью переустановить / переустановить его.

Если вы можете создать объект, существует проблема с приложением, обращающимся к компоненту. Обычно это происходит по одной из следующих причин:

  1. Параметры безопасности компонента

    • В целях выявления проблемы вы вправе снять флажок «принудительно проверять доступ». Убедитесь, что вы сняли флажок как на уровне приложения (пакета), так и на уровне компонента.
  2. Настройки пользователя

    • Проверьте эту ссылку . В дополнение к их советам попробуйте добавить IUSR_servername в качестве члена Администратора.
  3. Несоответствие между службами компонентов и реестром

    • Нам необходимо убедиться, что CLSID в компонентных службах соответствуют реестру. В службах компонентов найдите компонент (не приложение) и посмотрите свойства. Если компонент находится там, он определенно зарегистрирован. Пока вы здесь, мы могли бы дважды проверить некоторые настройки. Адрес DLL действителен? Правильны ли настройки безопасности, транзакций и активации? Хорошо, теперь обратите внимание на CLSID на вкладке «Общие». Зайдите в редактор реестра и найдите CLSID в HKEY_CLASSES_ROOT (он должен быть там). Убедитесь, что адрес dll и ProgID верны. Также убедитесь, что ключ и подразделы структурированы аналогично другим компонентам.

Если ничего из этого не работает, найдите в реестре имя компонента и удалите его. затем переустановите.

...