Установите разрешения MSMQ, используя VBScript (через Nant)
Мы используем Nant для развертывания приложения и нам нужно создать несколько очередей MSMQ во время процесса.
Мы используем Nant/psexec/cscript для вызова VBScript для создания самой очереди, но нам также необходимо установить разрешения.
Это можно сделать программно?
Мне известно о настройке разрешений для очереди MSMQ в сценарии, однако этот вопрос требует PowerShell или VBScript и имеет приемлемый ответ для PowerShell. У нас нет PowerShell, поэтому этот вопрос относится только к VBScript.
2 ответа
Согласно этому сообщению, API сценариев MSMQ не предоставляет никаких средств для установки разрешений для запросов, поэтому эту задачу невозможно выполнить с помощью VBScript.
Я могу предложить следующие обходные пути:
- Используйте PowerShell, как показано в сообщении, на которое вы ссылаетесь. (PowerShell может использовать.NET Framework и, следовательно, MSMQ .NET API, предоставляемый
System.Messaging
сборка.) - Создайте пользовательскую утилиту, которая будет устанавливать необходимые разрешения, и вызовите эту утилиту как часть процесса развертывания. Для настройки безопасности очереди вы можете использовать следующие функции API:
MQSetQueueSecurity
(в C или C++)MessageQueue.SetPermissions
(в.NET)
Просто наткнулся на это и увидел, что это без ответа. Хитрость заключается в том, чтобы использовать код VB.Net или C# непосредственно в nAnt. Вы можете сделать это с помощью nAnt include, с помощью задачи скрипта в глобальном пространстве; и в коде, производные от класса Task.
Или же. Вы можете поместить свой блок скрипта в цель. Я предпочитаю первый метод, так как его проще использовать и передавать параметры.
В любом случае, это НЕ VBScript, это полностью скомпилированный код.Net, так что вы можете делать практически все что угодно.
В элементе кода импортируйте System.Messaging и создайте очередь в переопределении ExecuteTask. Не забудьте дать разрешения на чтение / запись / просмотр для.\Users, иначе вы, вероятно, не сможете правильно использовать Очередь, кроме как от пользователя, запустившего скрипт nAnt (который обычно не является веб-сервером или Windows служба, которая читает очередь.)
Кроме того, поскольку у вас есть полный доступ к классу Messaging.MessageQueue, вы можете проверить наличие и удалить существующую очередь или нет!