Перечислить все исходящие очереди в MSMQ, C#

Как с помощью C# и .NET 3.5 получить список всех исходящих очередей в MSMQ? Я нашел эту статью об этом, но, как вы можете видеть ниже, у меня нет запись COM для Microsoft Message Queue 3.0 Object Library...

Я случайно открыл библиотеку объектов Microsoft Message Queue 3.0

Итак, как я могу получить текущий список исходящих очередей? Я подумал, что должен быть какой-то способ, раз уж я вижу их в Computer Management...

Управление компьютером + MSMQ

Что я могу сделать?


person Urda    schedule 31.05.2011    source источник


Ответы (1)


Два хороших места для начала, я думаю, это:

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.

person BlackICE    schedule 31.05.2011
comment
Проблема, с которой я столкнулся (по крайней мере, насколько я мог судить), заключалась в том, что мне пришлось добавить ссылку на COM. Однако в моей Visual Studio 2008 нет записи для Microsoft Message Queue 3.0 Object Library. Я не уверен, как исправить это состояние или как его обойти. Но да, эти две статьи ссылаются на аналогичные методы, которые я перечислил в связанной статье. - person Urda; 31.05.2011
comment
Есть ли способ взаимодействия с С#? Если есть, как мне это сделать? - person Urda; 31.05.2011
comment
Я вижу ваше обновление кода, я попробую его и сообщу! - person Urda; 31.05.2011
comment
... хорошо, что я получил список имен форматов, которые мне нужны. Это отличное начало. Однако не могли бы вы объяснить мне суть вашего фрагмента кода? Я пытался найти решение для этого, и я хотел бы знать рассуждения о вашем коде. Я был бы более чем счастлив отметить ваш ответ правильным после этого. - person Urda; 01.06.2011
comment
Хорошо, теперь это имеет смысл, когда я узнал больше о WMI. Спасибо за этот потрясающий ответ :) - person Urda; 02.06.2011
comment
Нет ли способа сделать это с помощью библиотеки С# MSMQ? msdn.microsoft.com/en -нас/библиотека/ - person Benjamin Sussman; 26.02.2014
comment
@BenjaminSussman из того, что я могу найти, для доступа к исходящим очередям по-прежнему используется COM или WMI. - person BlackICE; 26.02.2014