有大量的在線建議使用.net System.Messaging.MessageQueue SetPermissions方法以編程方式設置MSMQ權限。但是我找不到任何system.messaging屬性,可以讓我讀取當前在現有隊列上配置的權限。如何以編程方式讀取MSMQ隊列上的權限?
我想寫一個PowerShell審計腳本來評估幾十臺機器配置,如果我無法獲得配置的隊列權限,它幾乎完全沒用。
我打開的建議命令行選項,沒有發現任何提到在stackoverflow。 Yoel的MSMQ WMI提供程序不公開必要的信息,並且據我所知,沒有提供給MSMQ的命令行可以幫助你。
不能相信這是沒有人解決的問題。微軟的另一個企業產品缺少基本的安全功能(驗證)。
使用powershell進行審計時,會更喜歡內置或.NET框架解決方案,但如果需要,可以通過任何必要的方式獲取信息(CLI)。
感謝您的信息,我想如果可能的話,以避免DLL調用。而且,代碼只能得到二進制安全描述符,如果我通過powershell解析了隊列lqs文件,這實際上也是可用的。我想下一個問題是如何獲得安全主體,權限等呢? 例如:'[屬性] 標籤=專用$ \ testtran 類型= 00000000-0000-0000-0000-000000000000 QUEUENAME = \私人$ \ testtran雜誌= 00限額= 4294967295 安全= 01000780b0000000cc000000000000001400000002009c00050000000000140004000000010100000000000507000000000024003f000f00010500000000000 ...' – JorgeSandoval
我沒有想到這一點(所以我可能會半翹),但我想你會想要使用[System.Security.AccessControl](http://msdn.microsoft.com/en-us/library/ ms229742.aspx)命名空間剝離訪問控制列表。把它變成一個字節數組,你至少應該能夠創建一個[RawAcl](http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.rawacl.aspx)。甚至可以將字節數組變成更有用的東西。 –
太糟糕了我不能指望所有的盒子有Windows Vista加...從Vista的WMI有一個安全描述符類,可以讀取二進制安全描述符,並吐出win32_ACE數組,其中包含幾乎所有(它不清楚,如果它的工作原理對於MSMQ SD,將需要嘗試它)。 http://msdn.microsoft.com/en-us/library/aa394577(v=vs.85).aspx#the_role_of_security_descriptors – JorgeSandoval