可以通过将 RequiresEncryption 限定符添加到创建命名空间的托管对象格式 (MOF) .mof 文件来要求客户端脚本和应用程序建立用于身份验证的加密连接。
与 WMI 命名空间的加密连接指定 身份验证RPC_C_AUTHN_LEVEL_PKT_PRIVACY (或脚本中的 PktPrivacy )。 RequiresEncryption 限定符会导致 WMI 拒绝任何传入的数据请求,除非它们显式使用加密身份验证。 有关详细信息,请参阅 使用 VBScript 设置默认进程安全级别 ,或使用 C++设置身份验证。
还可以通过添加此属性来修改现有命名空间,然后再次编译 MOF 文件。 RequiresEncryption 用于 MOF 和 杂注命名空间 预处理器指令。
以下过程将命名空间设置为需要加密连接。
设置所需的加密
创建托管对象格式 (MOF) 文件,或修改定义命名空间的现有 MOF 文件。
下面的代码示例演示将修改的命名空间为 root\MyNamespace ,该文件名为 MyNamespace_security.mof。 RequiresEncryption 具有布尔数据类型,因此必须将其设置为 True 或 False。
#pragma namespace("\\\\.\\Root\\MyNamespace") [RequiresEncryption(TRUE)] instance of __systemSecurity { };运行 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 事件日志中的条目,这些条目指示拒绝对需要加密的命名空间的入站数据请求。
相关主题