我們在生產系統中使用了一些私有MSMQ隊列。自實施以來,我們不得不用隊列更新一些東西,並重新創建它們以使用更新後的代碼。我們有超過200臺機器需要這些更新,所以我正在研究一個將通過短信推送的程序來執行此更新。通過C#更新專用隊列上的MSMQ權限
我注意到的是,唯一可以運行我的程序來執行更新的人是最初在該特定機器上設置專用隊列的人。由於機器的數量,有多個管理員設置了這些隊列。
由於並非所有的員工仍然在這裏工作,這導致我[我的計劃]成爲問題。權限不允許程序更新我需要的所有內容。我搜索了一下,發現這個鏈接http://social.msdn.microsoft.com/Forums/hu-HU/msmq/thread/36a3d910-d533-4af3-86dc-498d00c68fef,它顯示瞭如何通過修改爲每個隊列創建的文件來更新權限。大!當我手動導航到該路徑並執行更新時,它將起作用。現在我想通過短信推送以編程方式進行。
當試圖從我的程序運行這個,我得到一個錯誤,說目錄不存在「C:\ Windows \ System32 \ msmq \ storage \ lqs」。咦?當我將該路徑輸入到「開始」 - >「運行」時,它會啓動該文件夾。好吧,打破我的代碼中的if(Directory.Exists(path))部分肯定會返回false。如果我刪除System32以外的所有文件夾,則Directory.Exsts工作得很好。
爲什麼我的程序無法確定是否存在msmq文件夾?我試過「以管理員身份運行」,它仍然返回false。我需要做些什麼來使檢查工作?
感謝
編輯:這是很奇怪的,我有一個FindAndReplace API,我寫道,將在路徑(文件或目錄),查找文本,替換文本等。當我運行程序從我的查找和替換GUI包裝,它工作得很好。但是當我從我的更新程序調用這個API時,它說那個目錄不存在。這真是令人困惑。 (我應該刪除MSMQ標記,因爲它與我的問題無關......)
找到原因。 FindAndReplace GUI包裝程序(即WAS查找目錄)以64位模式運行,而另一個不工作的程序以32位模式運行。 在調試這個時,我發現在這個目錄下爲我的文本做一個findstr是行不通的,而只做一個常規的find就可以。非常奇怪的行爲... – ganders 2012-02-02 21:32:52