2

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

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

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

4

2 回答 2

0

你愿意做一点点编程吗?如果没有,您是否愿意使用 PowerShell?

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

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

于 2012-12-20T15:13:10.973 回答
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 文章公共和私有队列状态:

公共队列的默认安全访问权限授予每个人向公共队列发送消息的权限。必须授予特定权限才能进行读取访问。

于 2012-12-28T10:57:52.543 回答