WMI 权限:选择 CommandLine,ProcessId FROM Win32_Process 不返回 CommandLine 数据

use*_*935 5 security permissions wmi

我正在通过 WMI 收集性能数据,并且希望避免为此目的使用管理员组中的帐户。目标计算机正在运行具有最新 SP/更新的 Windows Server 2003。

\n\n

我已经完成了我认为适当的配置,以允许我们的用户访问 WMI(类似于此处描述的内容: http: //msdn.microsoft.com/en-us/library/aa393266.aspx)。

\n\n

以下是所遵循的具体步骤:

\n\n
    \n\n
  1. 打开管理工具 -> 计算机管理:在计算机管理(本地)下展开服务和应用程序,右键单击 WMI 控制并选择属性。在“安全”选项卡中,展开“根”,突出显示 CIMV2,单击“安全”(靠近窗口底部);添加性能监视器用户并启用选项:启用帐户和远程启用。
  2. \n
    \n\xc2\xad
  3. 打开管理工具 -> 组件服务:在控制台根目录下转到组件服务->计算机 -> 右键单击​​我的电脑并选择属性,选择 COM 安全选项卡,在 \xe2\x80\x9cAccess Permissions\xe2\x80\x9d 中单击“编辑默认值”选择(或添加然后选择)\xe2\x80\x9cPerformance Monitor Users\xe2\x80\x9d 组并允许本地访问和远程访问,然后单击“确定”。在\xe2\x80\x9c启动和激活权限\xe2\x80\x9d中单击\xe2\x80\x9c编辑默认值\xe2\x80\x9d选择(或添加然后选择)\xe2\x80\x9c性能监视器用户\xe2\x80\ x9d 组并允许本地和远程启动和激活权限。
  4. \n
    \n\xc2\xad
  5. 打开管理工具 -> 组件服务:在控制台根目录下,转到组件服务 -> 计算机 -> 我的电脑 -> DCOM 配置 -> 突出显示 \xe2\x80\x9cWindows Management and Instrumentation\xe2\x80\x9d 右键单击​​并选择属性,选择安全选项卡,在\xe2\x80\x9c启动和激活权限\xe2\x80\x9d下选择自定义,然后单击编辑,添加\xe2\x80\x9c性能用户组\xe2\x80\x9d并允许本地和远程远程启动和远程激活权限。
  6. \n
\n\n

我可以通过 WMI Explorer 远程连接,但是当我执行此查询时:

\n\n
Select CommandLine, ProcessId FROM Win32_Process\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到了有效的结果,但每一行都有一个空的命令行。如果我将用户添加到管理员组并重新运行查询,命令行列将包含预期的数据。

\n\n

似乎我在某个地方缺少了一个许可,但我没有太多运气找到它。

\n\n

提前谢谢了。

\n

小智 0

我不认为这是权限问题,而可能是查询结构的微妙之处,我将通过我创建的用于执行此操作的代码进行解释(以便稍后能够缓存命令行)。

在我的 CacheMyWork 应用程序的代码(您可以在此处浏览)中,我发出的特定查询(并且肯定会返回 CommandLine 结果)是

从 Win32_Process WHERE ProcessId = 中选择命令行

我有一段时间没有使用 WMI Explorer,但也许它返回单个进程的命令行,而不是一次返回整个数组?不知道。

我已经使用这个应用程序三年了,虽然我现在不记得上次以非管理员用户身份运行时测试它是什么时候,但我 99% 确信它必须在这种情况下工作,因为成千上万的人已经下载了它,而且还没有人报告说它在重新启动后没有重新启动缓存的应用程序。[是的,我知道那些假设的人会发生什么,但这并没有阻止我在这里成为一个鲁莽的假设者。]