设置客户端应用程序进程安全性

调用 WMI 接口的客户端应用程序可以控制其进程的安全级别。 所有 WMI 应用程序都通过 COM 访问 WMI,你可以调用 COM 函数 CoInitializeSecurity 来设置进程的安全性。 对 WMI 和注册为事件使用者的应用程序进行异步调用的应用程序在调用到 WMI 时设置安全级别。

如果未显式调用 CoInitializeSecurity,COM 将使用注册表中的值隐式调用它。 但是,对于不提供 WMI 所需的安全性的模拟和身份验证,注册表值可能具有较低的设置。 有关详细信息,请参阅 使用 c + + 设置默认进程安全级别

不建议对 WMI 进行异步访问。 异步回调允许未经过身份验证的用户向接收器提供数据。 这会对脚本和应用程序带来安全风险。 若要消除此风险,请使用半同步或同步通信,或在客户端应用程序中执行正确的访问检查。 有关详细信息,请参阅 调用方法

调用 (IWbemServicesIEnumWbemClassObjectIWBEMCALLRESULTIWbemRefresher 的任何 WMI 代理) 使用进程外指针。 有关默认值和建议的详细信息,请参阅 设置 IWbemServices 和其他代理上的安全性

下面的过程介绍了在应用程序进程上设置 WMI 的安全性时必须执行的步骤。

在应用程序进程上设置 WMI 的安全性

  1. 确定运行客户端应用程序的 Windows 操作系统所需的安全级别。
  2. 调用 COM CoInitializeSecurity 函数以设置运行客户端应用程序的进程的默认安全性。 这声明了其他应用程序访问运行应用程序的进程所需的安全程度。
  3. 如果需要更改单个代理的安全性(例如,在对 IWbemServices的另一次调用上),请调用 CoSetProxyBlanket
  4. 如果需要控制需要更多权限的远程硬件或系统对象,请使用 AdjustTokenPrivileges 函数启用必要的权限。 请注意,您不能启用该进程尚未分配给它的特权。 有关详细信息,请参阅 检查对私有对象的访问权限

有关设置默认进程安全级别的详细信息,请参阅 使用 c + + 设置默认进程安全级别使用 VBScript 设置默认进程安全级别