在 WMI 中设置身份验证

在调用进程外部进行调用或是调用远程 WMI 服务时,WMI 使用组件对象模型的分布式版本 (DCOM)。 进程外和远程调用是通过代理进行的,这要求对调用进程的凭据进行身份验证。

在连接到计算机和 WMI 命名空间时设置身份验证级别。 若要连接到 WMI,请在 C++ 中调用 IWbemLocator::ConnectServer。 在脚本编写或 Visual Basic 中,使用 SWbemLocator.ConnectServer 或通过 moniker 字符串连接到 WMI。 在计算机之间连接时,DCOM 安全性和 WMI 都需要特定的身份验证级别。 所需的级别根据要连接的操作系统而不同。 有关详细信息,请参阅连接到远程计算机上的 WMI

WMI 通常在共享的服务主机中运行,并与主机中的其他进程共享相同的身份验证。 要使用不同的身份验证级别运行 WMI 进程,请使用带有 /standalonehost 开关的 winmgmt 命令运行 WMI,并为 WMI 设置一般的身份验证级别。 有关详细信息,请参阅维护 WMI 安全性

有关如何为 WMI 连接设置身份验证的详细信息和代码示例,请参阅使用 VBScript 设置身份验证服务使用 C++ 设置身份验证。 这些主题还包含列出 C++ 和脚本的身份验证常量的表。

在 WMI 中使用代理

要为代理设置身份验证,请调用 CoSetProxyBlanket 函数。 有关详细信息和代码示例,请参阅在 IWbemServices 和其他代理上设置安全性

以下适用于 WMI 的 COM API 对象直接使用 C++ 或 C# 中的代理来调用进程外或远程 WMI 服务:

脚本对象(如 SWbemObjectSWbemServicesSWbemRefresher)不直接使用代理。 相反,脚本对象表示调用上面列出的适用于 WMI 的 COM API 对象的包装器或层。 有关在脚本中设置身份验证的详细信息和代码示例,请参阅使用 VBScript 设置默认进程安全级别