InvokeHelper () создает исключение Доступ запрещен

Сообщество у меня довольно интересная и в то же время тяжелая проблема.
У меня есть приложение VB .NET + приложение Service + C ++. Приложение C ++ генерирует некоторые данные и выполняет обратные вызовы, используя метод InvokeHelper ():

InvokeHelper(0x60030000, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
eventType, eventValue);

Первый параметр — это метод, который должен быть вызван. Странный подход, но это не мой код, и я не могу изменить этот путь.

В сервисе у меня есть метод, помеченный атрибутом dispid для получения этого обратного вызова из приложения C ++.

<DispId(&H60030000)>
Public Sub ServerEvent(ByVal vEventType As Integer, ByVal vEventValue As Object)
RaiseEvent ControlPanelStateChange(vEventType, vEventValue)
End Sub

Этот код работает правильно, если я вошел в систему как администратор. Но если у пользователя Windows нет прав администратора, сразу после вызова метода InvokeHelper () возникает следующее исключение:

Исключение первого шанса в 0x75B7C42D (KernelBase.dll) в application.exe: 0x80070005: доступ запрещен

Есть ли у вас какие-либо идеи? Я играл с разрешениями DCOM, но результат тот же.

Любая помощь будет фантастической!

0

Решение

Решение проблемы:

DCOMCNFG, щелкните правой кнопкой мыши на «Мой компьютер» и выберите «Свойства» -> вкладка «COM Securities» -> «Права доступа» -> нажмите «Изменить настройки по умолчанию», добавьте в него сетевую службу и дайте ей разрешение «Разрешить локальный доступ». Сделать то же самое для < Имя_компьютера> \ Пользователи.

Затем -> Разрешения на запуск и активацию, нажмите «Изменить значения по умолчанию» и добавьте к нему сетевую службу и предоставьте ей разрешение «Локальный запуск» и «Активация локальной сети». Сделать то же самое для < Имя_компьютера> \ Пользователи.

0

Другие решения


По вопросам рекламы [email protected]