我试图获取远程计算机上可用队列的列表。该机器是工作组模式下的Win2003R2,运行代码的客户机是Windows 8计算机,它们都使用相同的工作组名称。运行下面的代码时,我得到一个异常:访问在MessageQueue.GetPrivateQueuesByMachine上被拒绝
var messages = MessageQueue.GetPrivateQueuesByMachine("Win2003SRV");
和错误消息是:
base {System.Runtime.InteropServices.ExternalException}: {"Access to Message Queuing system is denied."}
Message: "Access to Message Queuing system is denied."
MessageQueueErrorCode: AccessDenied
我敢肯定它是与权限在Windows 2003,但找不到许多。该代码可与另一个Win Server 2008(但是在工作组模式下)正常工作,并且可以与本地MSMQ一起使用。根据MSDN page,该功能在工作组模式下受支持,那么有什么用?
解决:
我的问题竟然是,我没有我的客户端机器上安装MSMQ!链接上的帮助指出了正确的方向,所以我所要做的就是在客户机上安装MSMQ。如果你看看GetPrivateQueuesByMachine的实现,本地调用可以抛出一个DllNotFoundException异常,并且这种异常可以转化为特定的消息,所以它应该给你提示什么是错误的提示
你是2003R2机器上的本地管理员吗? –
是的,我试过本地和域管理员 –