如何从本地Win7计算机上的专用队列获取MSMQ消息计数?

时间:2011-10-11 17:13:13

标签: c# windows-7 msmq

我正在尝试从本地Win7 Enterprise计算机上的专用队列获取MSMQ消息的计数。我可以从远程计算机获得计数没有问题,代码适用于Win2008 Server R2。我正在使用C#VS 2008。

代码示例:

int result = MQMgmtGetInfo(cname, "queue=DIRECT=OS:" + qname, ref props);

其中cname是具有私有队列的计算机名称MyLocalComputer
qname是对专用队列MyLocalComputer\\private$\\QueueName

的路径引用

当我从包含私有队列的Win7计算机调用此代码时,我得到-1072824319返回值。队列中有消息。

如果我从WinXP计算机调用此代码来获取Win7队列的计数,我会得到正确的计数。我也可以从WinXP计算机调用代码从同一WinXP机器上的本地专用队列中获取计数并获得正确的计数。

在Win7上访问本地私有队列有什么不同吗?由于我可以远程访问队列,我不认为这是一个权限问题,但我可能是错的。

2 个答案:

答案 0 :(得分:1)

听起来您正在使用MSMQ 3.0 API。 Windows 7使用MSMQ 4.0。

在.NET参考窗口中,查找 System.Messaging (版本4.0.0.0)并添加到您的项目中。

请看这个链接:http://www.codeproject.com/KB/cs/mgpmyqueue.aspx

[]的

Renan的

答案 1 :(得分:1)

-1072824319 = 0xC00E0001这是一个通用的MSMQ错误 尝试使用句号代替机器名称 这将告诉MSMQ使用“本地主机” 如果可行,那么机器可能会解决它自己的名称问题。

干杯
John Breakwell