Настройка безопасности процессов клиентских приложений

Клиентские приложения, вызывающие интерфейсы WMI, могут управлять уровнями безопасности своих процессов. Все приложения WMI обращаются к WMI через COM, и вы можете вызвать функцию COM CoInitializeSecurity , чтобы задать безопасность для процессов. Приложения, выполняющие асинхронные вызовы WMI, и приложения, которые регистрируются в качестве потребителей событий, устанавливают уровни безопасности при вызове WMI.

Если вы не выполняете явный вызов CoInitializeSecurity, COM вызывает его неявно со значениями из реестра. Однако значения реестра могут иметь более низкие параметры для олицетворения и проверки подлинности, которые не обеспечивают безопасность, необходимую для инструментария WMI. Дополнительные сведения см. в разделе Настройка уровня безопасности процесса по умолчанию с помощью C++.

Асинхронный доступ к WMI не рекомендуется. Асинхронный обратный вызов позволяет пользователю, не прошедшему проверку подлинности, предоставлять данные в приемник. Это создает угрозы безопасности для сценариев и приложений. Чтобы устранить риски, используйте полусинхронный или синхронный обмен данными или выполните надлежащие проверки доступа в клиентском приложении. Дополнительные сведения см. в разделе Вызов метода.

Вызовы любого прокси-сервера WMI (IWbemServices, IEnumWbemClassObject, IWbemCallResult или IWbemRefresher) используют указатель вне процесса. Дополнительные сведения о значениях по умолчанию и рекомендациях см. в разделе Настройка безопасности для IWbemServices и других прокси-серверов.

В следующей процедуре описаны действия, которые необходимо выполнить, чтобы настроить безопасность WMI в процессе приложения.

Настройка безопасности WMI в процессе приложения

  1. Определите уровни безопасности, необходимые для операционных систем Windows, в которых выполняется клиентское приложение.
  2. Вызовите функцию COM CoInitializeSecurity , чтобы задать безопасность по умолчанию для процесса, в котором выполняется клиентское приложение. Это указывает, какой объем безопасности требуется другим приложениям для доступа к процессу, в котором выполняется приложение.
  3. Если необходимо изменить безопасность на отдельном прокси-сервере, например при другом вызове IWbemServices, вызовите CoSetProxyBlanket.
  4. Если необходимо управлять удаленным оборудованием или системным объектом, которому требуются дополнительные привилегии, используйте функцию AdjustTokenPrivileges , чтобы включить необходимые привилегии. Обратите внимание, что нельзя включить привилегию, которую процесс еще не назначил ему. Дополнительные сведения см. в разделе Проверка доступа к частным объектам.

Дополнительные сведения о настройке уровня безопасности процесса по умолчанию см. в разделах Настройка уровня безопасности процесса по умолчанию с помощью C++ и Настройка уровня безопасности процесса по умолчанию с помощью VBScript.