如何以编程方式检测当前系统上是否已安装 MSMQ?

发布于 2024-10-03 15:49:08 字数 97 浏览 2 评论 0原文

如何以编程方式检测当前系统上是否已安装 MSMQ?

我正在使用 C++,但其他语言的答案仍然可能有帮助。

(VS2008、WinXP 及更高版本)

How can I programatically detect if MSMQ has been installed on the current system?

I am using C++, but answers in other laguages could still be helpful.

(VS2008, WinXP and up)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

叫思念不要吵 2024-10-10 15:49:08

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

You can simply ask COM to create an instance of the MSMQQueueInfo object. If it succeeds you know that MSMQ is installed.

#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;
        }
    }
}
幼儿园老大 2024-10-10 15:49:08

这里有一个 C# 指针 - 调用方法来枚举队列并检查错误代码。

我现在的做法是
尝试抓住
“GetPrivateQueuesByMachine”方法,
这将引发异常
'MessageQueueErrorCode.ServiceNotAvailable'
错误代码。

另一种选择是在此处 并查询服务器上的 MSMQ 对象实例。

There's a pointer for C# here - call a method to enumerate the queues and check the error code.

The way I'm doing it now is to
try-catch the
'GetPrivateQueuesByMachine' method,
that will throw an exception with the
'MessageQueueErrorCode.ServiceNotAvailable'
error code.

Another option would be to install the MSMQ WMI Provider here and query for MSMQ object instances on the server.

白色秋天 2024-10-10 15:49:08

您还可以检查注册表项是否存在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ。如果该密钥存在,则安装 MSMQ。

You also can check for the existence of the registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ. If the key exists, MSMQ is installed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文