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

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

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

还可以通过添加此属性来修改现有命名空间,然后再次编译 MOF 文件。 RequiresEncryption 用于 MOF杂注命名空间 预处理器指令。

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

设置所需的加密

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

    下面的代码示例演示将修改的命名空间为 root\MyNamespace ,该文件名为 MyNamespace_security.mofRequiresEncryption 具有布尔数据类型,因此必须将其设置为 TrueFalse

    #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 连接