Установите разрешения MSMQ, используя VBScript (через Nant) - PullRequest
1 голос
/ 06 июля 2010

Мы используем Nant для развертывания приложения, и нам нужно создать несколько очередей MSMQ во время процесса.

Мы используем Nant / psexec / cscript для вызова VBScript для создания самой очереди, но нам также нужно установить разрешения.

Можно ли это сделать программно?

Мне известно о Настройка разрешений для очереди MSMQ в сценарии , однако этот вопрос требует PowerShell или VBScript и имеет принятый ответ для PowerShell. У нас нет PowerShell, поэтому этот вопрос относится только к VBScript.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2013

Просто наткнулся на это и увидел, что это без ответа. Хитрость заключается в том, чтобы использовать код VB.Net или C # непосредственно в nAnt. Вы можете сделать это с помощью nAnt include, с помощью задачи скрипта в глобальном пространстве; и в коде, производные от класса Task.

Или. Вы можете поместить свой блок скрипта в цель. Я предпочитаю первый метод, так как его проще использовать и передавать параметры.

В любом случае, это НЕ VBScript, это полностью скомпилированный код .Net, так что вы можете делать практически все.

В элементе кода импортируйте System.Messaging и создайте очередь в переопределении ExecuteTask. Не забудьте дать разрешения на чтение / запись / просмотр для. \ Users, иначе вы, вероятно, не сможете правильно использовать очередь, кроме как от пользователя, запустившего скрипт nAnt (который обычно не является веб-сервером или Windows служба, которая читает очередь.)

Кроме того, поскольку у вас есть полный доступ к классу Messaging.MessageQueue, вы можете проверить существование и удалить существующую очередь или нет!

0 голосов
/ 08 июля 2010

Согласно этой записи , API сценариев MSMQ не предоставляет никаких средств для установки разрешений для запросов, поэтому эту задачу невозможно выполнить с помощью VBScript.

Я могу предложить следующие обходные пути:

  • Используйте PowerShell, как показано в сообщении, на которое вы ссылались. (PowerShell может использовать .NET Framework и, следовательно, MSMQ .NET API, предоставляемый сборкой System.Messaging.)
  • Создайте пользовательскую утилиту, которая установит необходимые разрешения, и вызовите эту утилиту как часть процесса развертывания. Для настройки безопасности очереди вы можете использовать следующие функции API:
...