【问题标题】:Different results from WMI query dependent on user account?WMI 查询的不同结果取决于用户帐户?
【发布时间】:2023-03-21 01:40:01
【问题描述】:

如果我对 WMI 运行以下查询:

\\.\root\ccm\ClientSDK 
Select * from CCM_Application where InstallState = "Installed"

当作为本地帐户运行(提升)时,我得到了 26 个结果,当作为本地 SYSTEM 帐户(从 Windows 服务)运行时,我得到的结果更少。在某些 PC 上只有一个不同,在其他 PC 上则说 10 个结果不同,但没有错误或失败,只是结果数量不同。并且总是 SYSTEM 拥有较少的内容,而不是用户查询拥有较少的内容。

我该如何解决这个问题,以便以 SYSTEM 身份运行将所有数据返回给我?

附:这是 SCCM WMI 提供程序,以防您没有听说过该命名空间。

【问题讨论】:

    标签: wmi sccm wmi-query


    【解决方案1】:

    这是由于某些应用程序针对的是用户而不是机器。

    我发现解决此问题的唯一方法是模拟当前登录的用户以进行此 WMI 调用。我使用以下原生 Windows API 做到了这一点:

    WTSGetActiveConsoleSessionId
    WTSQueryUserToken
    

    为了获取当前登录用户(在机器上打开控制台会话的用户)的令牌。然后假设这些返回正常,然后调用:

    ImpersonateLoggedOnUser
    

    要模拟该用户令牌,然后我们在该模拟下调用 WMI 查询。一旦 WMI 调用返回,我们就调用:

    RevertToSelf
    

    因此服务可以继续执行其他操作。似乎工作正常,并提供与以提升用户身份运行相同的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多