【问题标题】:WMI ManagementOperationObserver doesn't work against remote boxWMI ManagementOperationObserver 不适用于远程框
【发布时间】:2015-08-16 00:08:28
【问题描述】:

我试图弄清楚如何在 .Net 4.5 上使用 C# 对远程计算机异步执行 WMI 查询。

我正在使用 ManagementObjectSearcher 类,并使用 Get(ManagementOperationObserver watcher) 方法;或多或少我正在使用这里的示例https://msdn.microsoft.com/en-US/library/ms257344(v=vs.80).aspx

它不起作用。

这是我所知道的:

当我使用 wbemtest 连接到远程计算机并同步执行查询 (SELECT * FROM Win32_Service) 时,它可以工作。

当我将 wbemtest 设置为异步时,它也可以工作,因此这不是我的工作站或目标机器上的配置问题,而且我的凭据工作正常。

如果我将 C# 代码连接到本地工作站,使用 ManagementOperationObserver 异步执行相同的查询也可以正常工作。

当我更改我的 C# 代码以连接到我的远程目标计算机时,它不起作用。 ManagementOperationObserver 上的任何事件都不会触发,我的应用程序只是坐在那里等待。我把它放在那里几分钟,没有任何反应。

我的工作站是域的一部分,而我的目标远程计算机不是,如果这很重要(因为 wbemtest 可以同时使用同步/异步,我不确定它是否重要)。

此时我不知道下一步该尝试什么。 ManagementOperationObserver 是否不适用于远程查询?

【问题讨论】:

    标签: c# .net asynchronous wmi


    【解决方案1】:

    好的,默认情况下,Visual Studio 2013 在控制台应用程序上将“首选 32 位”设置为 true。我的工作站是 64 位的;我把它关掉了,现在我的远程调用工作了:/

    【讨论】:

      【解决方案2】:

      如果您以 32b 运行代码,它不起作用,但在 64b 编译下它可以正常工作,您的解释是什么?因为这是相当可怕的情况。

      【讨论】:

      • 目前我还没有头绪,也没有时间深入调查。
      【解决方案3】:

      我正在尝试自己从异步调用中获取结果,但仍然存在问题:代码已执行,但我没有看到最终结果。 我的代码是从 WMI 远程安装打印机。在Win32_Printer中,我使用的是

      printer.Put(operationWatcher); 
      

      并且在事件中,设置一个我正在监视的布尔值。

         private void OperationWatcher_ObjectPut(object sender, ObjectPutEventArgs e)
          {         
              if (e.Path.ClassName == "Win32_Printer")
              {
                  printerSuccessfullyPut = true;
                  Console.WriteLine("should be installed"); 
              }
          }
      

      代码已正确执行,但我没有安装打印机。如果我拨打同步电话

      printer.Put(); 
      

      打印机已安装。很奇怪。

      想知道问题是否可能与此处提到的问题具有相似的背景(关于使用 ManagementEventWatcher 的 Start 方法) http://blogs.microsoft.co.il/sasha/2012/09/20/asynchronous-wmi-queries-stay-away-from-them/

      【讨论】:

        猜你喜欢
        • 2012-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多