使用VBScript(通过Nant)设置MSMQ权限

使用VBScript(通过Nant)设置MSMQ权限,vbscript,permissions,msmq,psexec,wsh,Vbscript,Permissions,Msmq,Psexec,Wsh,我们正在使用Nant部署应用程序,需要在此过程中创建一些MSMQ队列 我们使用Nant/psexec/cscript调用VBScript来创建队列本身,但还需要设置权限 这可以通过编程实现吗 不过,我知道该问题要求使用PowerShell或VBScript,并且对PowerShell有一个公认的答案。我们没有可用的PowerShell,因此此问题特定于VBScript。根据,MSMQ脚本API不提供任何方法来设置查询权限,因此无法使用VBScript完成此任务 我可以提出以下解决办法: 使用P

我们正在使用Nant部署应用程序,需要在此过程中创建一些MSMQ队列

我们使用Nant/psexec/cscript调用VBScript来创建队列本身,但还需要设置权限

这可以通过编程实现吗

不过,我知道该问题要求使用PowerShell或VBScript,并且对PowerShell有一个公认的答案。我们没有可用的PowerShell,因此此问题特定于VBScript。

根据,MSMQ脚本API不提供任何方法来设置查询权限,因此无法使用VBScript完成此任务

我可以提出以下解决办法:

  • 使用PowerShell,如链接到的帖子中所示。(PowerShell可以使用.NET Framework,因此也可以使用
    System.Messaging
    程序集提供的MSMQ.NET API。)
  • 创建一个自定义实用程序,该实用程序将设置必要的权限,并在部署过程中调用此实用程序。要设置队列安全性,可以使用以下API函数:
    • (在C或C++中)
    • (in.NET)

刚刚遇到这个问题,发现没有人回答。这里的技巧是直接在nAnt中使用VB.Net或C#代码。您可以使用nAnt include和全局空间中的脚本任务来实现这一点;在代码中,派生自任务类

或者。您可以将脚本块放在目标中。我更喜欢前一种方法,因为它更容易重用和传入参数

在这两种情况下,这都不是VBScript,而是完全编译的.Net代码,因此您几乎可以做任何事情

在代码元素中,导入System.Messaging,并在ExecuteTask覆盖中创建队列。请不要忘记为。\r用户授予读/写/查看权限,否则您可能无法正确使用队列,但运行nAnt脚本的用户除外(通常不是读取队列的web服务器或Windows服务)

此外,由于您拥有对Messaging.MessageQueue类的完全访问权限,因此可以检查是否存在并删除现有队列