1

現在、リモートマシンでMSMQ情報を読み取ろうとしています。

私が経験する主な問題は、キューの名前を取得することです。キューの名前はかなり長く、64文字を超えるものもあります。

WMIを使用すると、名前は常に64文字に切り捨てられるため、区別できないキュー名になります(最初の64文字のプレフィックスも同様です)。

.NET 3.5 SP1とWMIマルチクエリツールを使用してみましたが、違いはありません。

名前を読み取れなかっただけでなく、WHEREも役に立たなかったため、WMIクエリに違いをもたらすサフィックスを提供しました。

これを機能させるためのヒントはありますか?

この動作の説明となる可能性のある非常に古いエントリがMSサポートDBにあります。すでにそこにありますが(2004)、VS 2005で修正される可能性があると言われています。修正されたことがないか、何か別の問題がある可能性があります。

4

2 に答える 2

1

MessageQueue.GetPublicQueuesByMachine試してみることをお勧めしますMessageQueue.GetPrivateQueuesByMachine

これにより、両方のタイプのキューをカバーできるはずです(もちろん、システムキューはありませんが、それらはよく知られています)。

于 2012-07-06T12:20:04.890 に答える
1

WMIを使用して実際の長い名前を取得する機会はないと思います。

JohnBreakwellがブログに書いています:MSMQキュー名が表示される時間...またはそうでない

代わりに、キュー名をActiveDirectoryに保存する方法に制限があります。[...]ただし、パブリックキューの場合、名前をActive Directoryに格納するために使用されるフィールドには、最初の64文字のみが収まり、残りの名前は別のフィールド(mSMQQueueNameExt)に格納されます。

于 2012-07-10T09:47:43.883 に答える