【问题标题】: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 类具有完全访问权限,因此您可以检查是否存在并删除现有队列!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-02
        • 1970-01-01
        • 2010-10-20
        • 2012-04-18
        • 2022-10-01
        • 2011-03-08
        • 2011-07-24
        • 2010-11-30
        相关资源
        最近更新 更多