簡體   English   中英

如何以編程方式檢測當前系統上是否已安裝MSMQ?

[英]How can I programmatically detect if MSMQ has been installed on the current system?

如何以編程方式檢測當前系統上是否已安裝MSMQ?

我正在使用C ++,但用其他語言回答也可能會有所幫助。

(VS2008,WinXP及更高版本)

有對C#的指針在這里 -調用來枚舉隊列,並檢查錯誤代碼的方法。

我現在做的方法是嘗試捕獲“ GetPrivateQueuesByMachine”方法,該方法將引發帶有“ MessageQueueErrorCode.ServiceNotAvailable”錯誤代碼的異常。

另一個選擇是在此處安裝MSMQ WMI提供程序並在服務器上查詢MSMQ對象實例。

您可以簡單地要求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;
        }
    }
}

您還可以檢查是否存在注冊表項: HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSMQ 如果密鑰存在,則安裝MSMQ。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM