我目前正在尝试在远程计算机上读取MSMQ信息。
我遇到的主要困难是获取队列的名称。 队列的名称很长,有些超过64个字符。
使用WMI,名称总是被截断为64个字符,这导致我无法区分的队列名(前64个字符的类似前缀)。
我尝试使用.NET 3.5 SP1和WMI Multi Query Tool,没有区别。
我不仅无法读取名称,还提供了与WMI查询不同的后缀,因为WHERE也没有帮助。
任何提示如何使这项工作?
MS support DB中有一个非常旧的条目可能是这种行为的解释。虽然已经存在(2004年),但据说它可能在VS 2005中得到修复。 要么它从来没有被修复过,要么可能有不同的错误。
答案 0 :(得分:1)
我建议您尝试MessageQueue.GetPublicQueuesByMachine
和MessageQueue.GetPrivateQueuesByMachine
。
这应该让你了解两种类型的队列(当然,没有系统队列,但这些是众所周知的。)
答案 1 :(得分:1)
我认为您没有机会使用WMI获取真正的长篇名称。
John Breakwell在博客上发表了关于它的文章:How long MSMQ queue names are displayed ... or not
相反,限制在于队列名称如何存储在Active中 目录。 [...] 但是,对于公共队列,只有前64个字符 适合用于在Active Directory中存储名称的字段 并且名称的其余部分存储在 另一个字段(mSMQQueueNameExt)。