我想從本地Win7企業計算機上的專用隊列中獲取MSMQ消息的計數。我可以毫無問題地從遠程計算機獲取計數,代碼在Win2008 Server R2上運行。我使用C#VS 2008如何從本地Win7機器上的專用隊列獲取MSMQ消息計數?
代碼示例:
int result = MQMgmtGetInfo(cname, "queue=DIRECT=OS:" + qname, ref props);
其中cname
是專用隊列,MyLocalComputer
機器名,並
qname
是路徑參考專用隊列,MyLocalComputer\\private$\\QueueName
當我從包含專用隊列的Win7計算機調用此代碼時,我得到一個-1072824319
返回值。隊列中有消息。
如果我從WinXP計算機調用此代碼來獲取Win7隊列的計數,我會得到正確的計數。我也可以調用WinXP計算機的代碼,從同一臺WinXP計算機上的本地專用隊列中獲取計數,並獲得正確的計數。
在Win7上訪問本地專用隊列有什麼不同嗎?由於我可以遠程訪問隊列,所以我不認爲這是一個權限問題,但我可能是錯的。
這裏是我發現,似乎工作。如果MQMgmtGetInfo使用的cname變量指向本地計算機,則當傳遞給MQMgmtGetInfo時,此變量必須爲null。我添加了一個函數來檢查本地機器並相應地設置cname。 – lbills
你應該回答自己的問題並接受答案。這非常有幫助,但直到我跑下其他兩個洞後,我纔看到您的評論。 – Langdon