【问题标题】:Set MSMQ permissions using VBScript (via Nant)使用 VBScript 设置 MSMQ 权限(通过 Nant)
【发布时间】:2011-03-12 10:42:28
【问题描述】:
我们正在使用 Nant 部署应用程序,在此过程中需要创建一些 MSMQ 队列。
我们使用 Nant/psexec/cscript 调用 VBScript 来创建队列本身,但我们还需要设置权限。
这可以通过编程方式完成吗?
我知道Setting permissions on a MSMQ queue in script 但是该问题要求使用 PowerShell 或 VBScript,并且已接受 PowerShell 的答案。我们没有可用的 PowerShell,所以这个问题是针对 VBScript 的。
【问题讨论】:
标签:
vbscript
permissions
msmq
psexec
wsh
【解决方案1】:
根据this post,MSMQ 脚本 API 不提供任何设置查询权限的方法,因此无法使用 VBScript 完成此任务。
我可以建议以下解决方法:
- 使用 PowerShell,如您链接到的帖子中所示。 (PowerShell 可以使用 .NET Framework,因此可以使用
System.Messaging 程序集提供的 MSMQ .NET API。)
- 创建一个自定义实用程序来设置必要的权限,并在部署过程中调用该实用程序。要设置队列安全性,您可以使用以下 API 函数:
【解决方案2】:
刚刚遇到这个,发现它没有得到答复。这里的诀窍是直接在 nAnt 中使用 VB.Net 或 C# 代码。您可以使用 nAnt 包含来执行此操作,并在全局空间中使用脚本任务;并在代码中,派生自 Task 类。
或者。您可以将脚本块放在目标中。我更喜欢前一种方法,因为它更容易复用和传递参数。
无论哪种情况,这都不是 VBScript,它是完全编译的 .Net 代码,因此您几乎可以做任何事情。
在您的代码元素中,导入 System.Messaging,并在您的 ExecuteTask 覆盖中创建队列。不要忘记为 .\Users 授予读/写/查看权限,否则您可能无法正确使用队列,除非是运行 nAnt 脚本的用户(通常不是 Web 服务器或 Windows正在读取队列的服务。)
此外,由于您对 Messaging.MessageQueue 类具有完全访问权限,因此您可以检查是否存在并删除现有队列!