2010-11-23 123 views

回答

2

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

我喜歡 「更大的問題」 – rkellerm 2010-11-23 15:59:38

2

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

我現在做的方式是 的try-catch的 「GetPrivateQueuesByMachine」的方法, 會拋出異常與 「MessageQueueErrorCode.ServiceNotAvailable」 錯誤代碼。

另一種選擇是安裝MSMQ WMI提供程序here和查詢服務器上的MSMQ對象實例。

1

您還可以檢查註冊表鍵的存在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ。如果密鑰存在,則安裝MSMQ。

相關問題