我試圖獲取遠程計算機上可用隊列的列表。該機器是工作組模式下的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機器上的本地管理員嗎? –
是的,我試過本地和域管理員 –