Как программно определить, установлен ли MSMQ в текущей системе? - PullRequest
1 голос
/ 23 ноября 2010

Как я могу программно определить, установлен ли MSMQ в текущей системе?

Я использую C ++, но ответы на других языках могут быть полезны.

(VS2008, WinXP и выше)

Ответы [ 4 ]

2 голосов
/ 23 ноября 2010

Вы можете просто попросить COM создать экземпляр объекта MSMQQueueInfo.Если это успешно, вы знаете, что MSMQ установлен.

#include <atlbase.h>
#include <mqoai.h>

#include <iostream>
using namespace std;

int main()
{
    auto error = CoInitializeEx(0, COINIT_MULTITHREADED | COINIT_DISABLE_OLE1DDE);

    if (FAILED(error))
    {
        wcout << L"You've got bigger problems" << endl;
    }
    else
    {
        CComPtr<IMSMQQueueInfo> info;

        error = info.CoCreateInstance(__uuidof(MSMQQueueInfo));

        if (SUCCEEDED(error))
        {
            wcout << L"MSMQ is installed" << endl;
        }
    }
}
2 голосов
/ 23 ноября 2010

Здесь указатель на C # - вызовите метод для перечисления очередей и проверки кода ошибки.

Теперь я пытаюсь сделать следующее:перехватить метод «GetPrivateQueuesByMachine», который вызовет исключение с кодом ошибки «MessageQueueErrorCode.ServiceNotAvailable».

Другой вариант - установить поставщик WMI MSMQ здесь и запроситьдля экземпляров объектов MSMQ на сервере.

1 голос
/ 23 ноября 2010

Вы также можете проверить наличие ключа реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ.Если ключ существует, MSMQ установлен.

0 голосов
/ 25 января 2011
...