【问题标题】:Reading and/or Filtering on MSMQ name using WMI使用 WMI 读取和/或过滤 MSMQ 名称
【发布时间】:2012-07-06 12:10:46
【问题描述】:

我目前正在尝试读取远程计算机上的 MSMQ 信息。

我遇到的主要困难是获取队列的名称。 队列的名称很长,有的超过 64 个字符。

使用 WMI,名称总是被截断为 64 个字符,这导致我无法区分队列名称(前 64 个字符的类似前缀)。

我尝试使用 .NET 3.5 SP1 和 WMI 多查询工具,但没有任何区别。

我不仅看不懂名称,而且提供了对 WMI 查询产生影响的后缀,因为 WHERE 也无济于事。

任何提示如何使这项工作?

MS support DB 中有一个非常古老的条目,这可能是对这种行为的解释。虽然已经存在(2004 年),但据说它可能会在 VS 2005 中修复。 要么它从未被修复,要么可能有其他错误。

【问题讨论】:

标签: c# .net wmi msmq


【解决方案1】:

我认为您没有机会使用 WMI 获得真正的长名称。

John Breakwell 曾在博客中介绍过它:How long MSMQ queue names are displayed ... or not

相反,限制在于队列名称在 Active 中的存储方式 目录。 [...] 但是,对于公共队列,只有前 64 个字符会 适合用于在 Active Directory 中存储名称的字段 并且名称的其余部分存储在 另一个字段 (mSMQQueueNameExt)。

【讨论】:

    【解决方案2】:

    我建议你试试MessageQueue.GetPublicQueuesByMachineMessageQueue.GetPrivateQueuesByMachine

    这应该可以让您了解两种类型的队列(当然,没有系统队列,但这些都是众所周知的)。

    【讨论】:

    • 我真的很想用 WMI 来轻松地做不同的查询。
    • @StampedeXV:MessageQueue API 还支持各种过滤器(我的回答中的方法有一些重载)。无论如何,如果不合适,我将删除我的答案。
    • 你的答案不是问题,这是一个很好的解决方案。我只想用 WMI 来做。
    猜你喜欢
    • 2014-05-20
    • 2014-07-03
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多