要求与命名空间建立加密连接

通过将 RequiresEncryption 限定符添加到创建命名空间的托管对象格式 (MOF) .mof 文件,可以要求客户端脚本和应用程序建立加密连接进行身份验证。

与 WMI 命名空间建立加密连接会指定 RPC_C_AUTHN_LEVEL_PKT_PRIVACY(或脚本中的 PktPrivacy)以进行身份验证。 RequiresEncryption 限定符使 WMI 拒绝任何传入数据请求,除非这些请求显式使用加密身份验证。 有关详细信息,请参阅使用 VBScript 设置默认进程安全级别使用 C++ 设置身份验证

还可以通过添加此属性来修改现有命名空间,然后再次编译 MOF 文件。 RequiresEncryption 在 MOF 中与 pragma 命名空间预处理器指令配合使用。

以下过程将命名空间设置为需要加密连接。

设置所需的加密

  1. 创建托管对象格式 (MOF) 文件或修改定义命名空间的现有 MOF 文件。

    以下代码示例显示将要修改的命名空间为 root\MyNamespace,文件名为 MyNamespace_security.mof。 RequiresEncryption 具有布尔数据类型,因此必须将其设置为 True 或 False。

    #pragma namespace("\\\\.\\Root\\MyNamespace") 
    
    [RequiresEncryption(TRUE)] 
    instance of __systemSecurity { };
    
  2. 运行 mofcomp.exe,以编译 MOF 文件。

    c:\mofcomp MyNamespace_security.mof

    在 C++ 中,使用 IMoFCompiler 方法。

WMI 拒绝使用默认身份验证级别的客户端,因为 DCOM 将安全性协商到运行 WMI 服务的 SVCHOST 进程所需的级别。 有关服务主机的详细信息,请参阅提供程序托管和安全性。 有关连接到 WMI 命名空间时设置身份验证级别的详细信息,请参阅使用 C++ 设置默认进程安全级别使用 C++ 设置身份验证使用 VBScript 设置默认进程安全级别

在异步回叫连接上返回数据时,WMI 会向请求计算机返回拒绝访问的消息。 WMI 还会使用加密命名空间在计算机的 NT 事件日志中创建日志项目,指出无法与客户端建立安全连接。

从 Windows Vista 开始,WbemCore.log 文件不再存在。 可以检查 NT 事件日志中是否有项目指示对需要加密的命名空间的入站数据请求遭到拒绝。

设置命名空间安全描述符

WbemAuthenticationLevelEnum

保护远程 WMI 连接