繁体   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