Во-первых, имейте в виду, что Microsoft рекомендует использовать полусинхронные операции (как предложил Брайан):
Если вы можете, мы рекомендуем использовать полу-синхронная операция вместо.Эффект производительности невелик, и полусинхронная операция обеспечивает те же функциональные возможности, но не требует обратного соединения.
См. Также Настройка безопасности для асинхронного вызова в VBScript .
Если вы все еще хотите использовать асинхронные операции, обратитесь к следующим статьям:
YMMV, но для меня (Клиент: Win7 x64 SP1 Server: Windows Server 2008 Enterprise SP2 без брандмауэра) решение для исключения E_ACCESSDENIED
было найдено в третьей статье:
- Нажмите Пуск, выберите Выполнить, введите DCOMCNFG и нажмите кнопку ОК.
- В диалоговом окне Службы компонентов разверните Службы компонентов , разверните Компьютеры , а затем щелкните правой кнопкой мыши Мой компьютер и выберите Свойства .
- В МойВ диалоговом окне «Свойства компьютера» откройте вкладку Безопасность COM .
- Под Права доступа , нажмите Изменить ограничения .
- В диалоговом окне Разрешение на доступ выберите АНОНИМНЫЙ ВХОД имя в Группа или имена пользователей box.В столбце Разрешить в разделе Разрешения для пользователя выберите Удаленный доступ , а затем нажмите ОК .
Обратите внимание, что я сделал выше в клиенте .Хотя это решило проблему с разрешением DCOM, я столкнулся с ошибками доступа к WMI (0x80041003
).Оказывается, это произошло из-за ключа реестра, упомянутого во второй статье:
Параметры CIMOM необходимо обновить, если удаленное соединение между компьютерами, не имеющими доверительные отношения;в противном случае асинхронное соединение не будет установлено.Этот параметр не следует изменять для компьютеров в том же домене или в доверенных доменах.
Чтобы разрешить анонимные обратные вызовы, необходимо изменить следующую запись реестра: HKLM \ SOFTWARE \ Microsoft \ WBEM \ CIMOM \ AllowAnonymousCallback
Если ключ AllowAnonymousCallback установлен в 0, служба WMI предотвращает анонимные обратные вызовы для клиента.Если установлено значение 1, служба WMI разрешает клиенту анонимные обратные вызовы.
Обратите внимание, что вам необходимо установить вышеприведенное на сервере .Как только я это сделал, сработали асинхронные обратные вызовы.Другие вещи, которые вы можете попробовать, это запустить ваш клиент в качестве администратора и установить для ConnectionOptions.EnablePrivileges значение true.
Для устранения неисправностей см .:
Наконец, я рекомендую вам воспользоваться тестером Microsoft WMI (%windir%\system32\wbem\wbemtest.exe
)