使用WMI读取和/或过滤MSMQ名称

时间:2012-07-06 12:10:46

标签: c# .net wmi msmq

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

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

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

我尝试使用.NET 3.5 SP1和WMI Multi Query Tool,没有区别。

我不仅无法读取名称,还提供了与WMI查询不同的后缀,因为WHERE也没有帮助。

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

MS support DB中有一个非常旧的条目可能是这种行为的解释。虽然已经存在(2004年),但据说它可能在VS 2005中得到修复。 要么它从来没有被修复过,要么可能有不同的错误。

2 个答案:

答案 0 :(得分:1)

我建议您尝试MessageQueue.GetPublicQueuesByMachineMessageQueue.GetPrivateQueuesByMachine

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

答案 1 :(得分:1)

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

John Breakwell在博客上发表了关于它的文章:How long MSMQ queue names are displayed ... or not

  

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