列举 MSMQ 中所有的出站队列,C#

10
使用C#和.NET 3.5,如何获取MSMQ中所有出站队列的列表?我找到了这篇文章,但是如下图所示,我没有Microsoft Message Queue 3.0 Object Library的COM条目...

意外丢失了Microsoft Message Queue 3.0 Object Library

那么我该怎么获取当前的出站队列列表呢?我想肯定有一种方法可以获取,因为我在计算机管理中可以看到它们...

计算机管理+ MSMQ

我该怎么办?

1个回答

3

我认为两个好的起点是这两个:

http://msdn.microsoft.com/en-us/library/ms703173%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/ms711378%28v=vs.85%29.aspx

我会看看能否编写一些代码。


也许不是,那些看起来很旧,还在寻找。
这里有一些 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 

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);
            }
        }
    }
}

看起来所有的输出队列都以"os:"开头

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


有没有办法与C#进行Interop?如果有,我该怎么做? - Urda
我看到你的代码更新了,我会尝试它并回报! - Urda
好的,那给我提供了我需要的格式名称列表。这是一个很好的开始。然而,你能向我解释一下你代码片段的"科学"吗?我一直在尝试解决这个问题,我想知道你代码的原理。在此之后,如果可以的话,我很乐意将你的答案标记为正确答案。 - Urda
有没有使用C# MSMQ库的方法来完成这个任务?http://msdn.microsoft.com/en-us/library/System.Messaging.MessageQueue_methods(v=vs.110).aspx - Ben Sussman
1
从我所找到的资料来看,仍然需要使用COM或WMI才能访问出站队列。 - BlackICE
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接