работает на компьютере с Win 2008 R2.
в рамках автоматизации процедуры установки моего приложения я создал небольшую утилиту командной строки, которая при вызове создает MQ.так как мое развертывание происходит в среде рабочей группы, я устанавливаю созданные разрешения для очереди, чтобы все и анонимные пользователи имели полный контроль над очередью.
мой код выглядит так:
Try
Dim Q As MessageQueue = MessageQueue.Create(QueueName)
Console.WriteLine("Queue created successfully")
' Create an AccessControlList.
Dim list As New AccessControlList()
'Add the AccessControlEntry to the AccessControlList.
list.Add(New AccessControlEntry(New Trustee("Everyone"), GenericAccessRights.All, StandardAccessRights.All, AccessControlEntryType.Allow))
'Add the AccessControlEntry to the AccessControlList.
list.Add(New AccessControlEntry(New Trustee("ANONYMOUS LOGON"), GenericAccessRights.All, StandardAccessRights.All, AccessControlEntryType.Allow))
' Apply the AccessControlList to the queue.
Q.SetPermissions(list)
Catch ex As Exception
Console.WriteLine(String.Format("Unable to create queue {1}. {0}", ex, QueueName))
End Try
при запускеэто с именем очереди, как ". \ Private $ \ QueueName", очередь создается успешно, и если я смотрю на разрешения для очереди, все выглядит ОК (все и анонимные имеют полный доступ к очереди).проблема в том, что разрешения кажутся нормальными, но это не так.когда анонимный пользователь пытается отправить (или прочитать) сообщение в очередь, он получает сообщение об отказе в доступе.если в очереди разрешений я удаляю все и анонимные разрешения и воссоздаю их, то внезапно все работает, как ожидалось, и клиент может отправлять сообщения.
, чтобы дополнительно доказать, что есть какая-то проблема: если я смотрю напапка C: \ Windows \ Sysnative \ MSMQ \ хранение \ коды LQ \ о содержании в очереди устанавливающих файлов я вижу эти разрешения
1011 * Security = 010007806800000084000000000000001400000002005400030000000000140024001f100101000000000001000000000000140004001f10010100000000000507000000000024003f000f0001050000000000051500000097fd4a8271ec5457708be3d5f401000001050000000000051500000097fd4a8271ec5457708be3d5f401000001050000000000051500000097fd4a8271ec5457708be3d501020000 1013 * и после удаления и повторного созданияразрешения я получаю эти параметры безопасности:
Безопасность = 010007806800000084000000000000000000000000540003000000005400030000000024003f000f0001050000000000051500000097fd4a8271ec5457708be3d5f40100000000140000000000000000000000000000000000000000000000000000000000000f0001010000000000010000000001050000000000051500000097fd4a8271ec5457708be3d5f401000001050000000000051500000097fd4a8271ec5457708be3d501020000
1017 * на каждой очереди, созданной с использованием кода выше настройки безопасности, как в первой строке безопасности, прежде чем я вновь создать установку и как 2-й линии безопасности после. 1019 * что я здесь отсутствует?
PS Вы можете прочитать некоторый анализ этого токена безопасности, сделанный бывшим сотрудником MSFT, на посте на форуме MS, который я сделал на эту тему http://social.msdn.microsoft.com/Forums/en-US/msmq/thread/2f87fe8a-c452-432a-815d-05eeaf455514/