C# 枚举MSMQ、C中的所有传出队列#

C# 枚举MSMQ、C中的所有传出队列#,c#,msmq,C#,Msmq,使用C#和.NET 3.5,如何获得MSMQ中所有传出队列的列表?我找到了,但正如您在下面看到的,我没有Microsoft Message Queue 3.0对象库的COM条目 那么,如何获取当前传出队列列表?我想一定有办法,因为我可以在计算机管理中看到它们 我能做什么呢?我认为有两个好的起点: 我看看能不能编一些代码 也许不是,那些看起来很老,仍然在看 下面是一些WScript,它将向您展示它们,但仍在寻找.Net代码: Dim Locator Set Locator = Crea

使用C#和.NET 3.5,如何获得MSMQ中所有传出队列的列表?我找到了,但正如您在下面看到的,我没有Microsoft Message Queue 3.0对象库的COM条目

那么,如何获取当前传出队列列表?我想一定有办法,因为我可以在
计算机管理
中看到它们


我能做什么呢?

我认为有两个好的起点:

我看看能不能编一些代码


也许不是,那些看起来很老,仍然在看


下面是一些WScript,它将向您展示它们,但仍在寻找.Net代码:

Dim Locator
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Dim objs
Set Service = Locator.ConnectServer(".", "root\cimv2")
Set objs = Service.ExecQuery("Select * From Win32_PerfRawData_MSMQ_MSMQQueue")
For Each object In objs
    WScript.Echo "Name: " & object.Name
Next 

看起来所有传出队列都以“os:”开头


需要引用System.Management和System.Management.Instrumentation

我遇到的问题(至少就我所知)是我必须添加COM引用。但是,在我的Visual Studio 2008中,没有Microsoft Message Queue 3.0对象库的条目。我不知道如何纠正这种状态,或者如何解决它。但是,是的,这两篇文章引用了我在《有没有办法与C#进行互操作》中列出的类似方法?如果有,我会怎么做?我看到你的代码更新,我会尝试它,并报告回来!。。。好吧,这给了我一个我需要的格式名称列表。这是一个很好的开始。然而,你能向我解释一下你的代码片段的“科学”吗?我一直在尝试解决这个问题,我想知道你的代码的原因。“在那之后,我会非常高兴地把你的答案标记为正确的。”BenjaminSussman从我所能找到的情况来看,仍然是COM或WMI才能到达传出队列
using System.Management;
namespace TestMSMQStuff
{
    class Program
    {

        static void Main(string[] args)
        {

            System.Management.SelectQuery q = new SelectQuery("Select * From Win32_PerfRawData_MSMQ_MSMQQueue");
            ManagementObjectSearcher s = new ManagementObjectSearcher(q);
            foreach (var r in s.Get())
            {
                Console.WriteLine(r.Properties["Name"].Value);
            }
        }
    }
}