访问远程MSMQ计数

时间:2012-12-16 07:07:48

标签: c# msmq

我的计算机位于域D1中,域D2中的远程服务器中有公共MSMQ。我通过vpn连接到D2,即我可以在D2中RDP机器并访问MSMQ。

我想要的是在没有RDP系统的情况下访问MSMQ(知道消息计数)。所以我为此构建了一个应用程序。我使用Impersonation模拟D2的用户(即使用D2的凭据),但问题是我无法访问“公共”MSMQ(使用Messagequeue.GetPublicQueue())并抛出异常并显示消息“工作组安装计算机不支持这项行动。“但是当我使用MessageQueue.GetPrivateQueue()时,它返回了一个私有队列的集合。

我尝试将MSMQManager用于messageCount Path = @"Direct:OS:machine\publicqueue"; FormatName=null; new MSMQManager.inIt(machineName, path , FormatName); 这也会导致队列不存在或未打开的异常。但我可以检查队列是否正常工作。

2 个答案:

答案 0 :(得分:0)

您是否愿意进行一些编程?如果没有,您是否习惯使用PowerShell?

无论哪种方式 - 我会查看this post,因为它似乎包含您正在寻找的答案。

祝你好运,希望这会有所帮助

答案 1 :(得分:0)

  • 您的问题可能是您正在远程

方法GetPublicQueuesByMachine()确实可通过远程访问。

您可以在MSDN文档中的功能矩阵中看到这一点:MessageQueue.GetPublicQueuesByMachine

  

下表显示了此方法在各种工作组模式下是否可用。

 Workgroup mode                         Available
 --------------                         ---------
 Local computer                         No
 Local computer and direct format name  No
 Remote computer                        No
 Remote computer and direct format name No
  • 同时检查队列的访问权限。

如果我在之前的建议中出错,可能就像试验网络中特定用户的访问权限一样简单。

MSDN文章Public and private queues声明:

  

公共队列的默认安全访问权限赋予每个人权限   将消息发送到公共队列。 必须具有特定权限   授予阅读权限。