1

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

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

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

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

我不仅无法读取名称,还提供了对 WMI 查询产生影响的后缀,因为 WHERE 也无济于事。

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

MS 支持数据库中有一个非常古老的条目,可以解释这种行为。虽然已经存在(2004 年),但据说它可能会在 VS 2005 中得到修复。要么它从未被修复,要么可能有一些不同的错误。

4

2 回答 2

1

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

John Breakwell 曾在博客上写过:MSMQ 队列名称显示多长时间……或不显示

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

于 2012-07-10T09:47:43.883 回答
1

我建议你尝试MessageQueue.GetPublicQueuesByMachineMessageQueue.GetPrivateQueuesByMachine

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

于 2012-07-06T12:20:04.890 回答