Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式在MSMQ中添加专用队列_C#_Command Line_Msmq - Fatal编程技术网

C# 以编程方式在MSMQ中添加专用队列

C# 以编程方式在MSMQ中添加专用队列,c#,command-line,msmq,C#,Command Line,Msmq,我有超过20个队列的列表,需要在MSMQ中添加为专用队列 有没有一种方法可以使用 命令行 C#编程 如果有一种方法可以使用某种脚本或.net编程,那么我可以添加它,而不必手动输入它并导致打字错误 请让我知道 谢谢 您只能在本地计算机上创建专用队列。有关详细信息,请参见:对于命令行,您可以创建包含以下内容的.vbs文件: Option Explicit Dim objInfo Dim objQue Dim objMsg Dim strFormatName ' Destination str

我有超过20个队列的列表,需要在MSMQ中添加为专用队列

有没有一种方法可以使用

  • 命令行

  • C#编程

  • 如果有一种方法可以使用某种脚本或.net编程,那么我可以添加它,而不必手动输入它并导致打字错误

    请让我知道

    谢谢


    您只能在本地计算机上创建专用队列。有关详细信息,请参见:

    对于命令行,您可以创建包含以下内容的.vbs文件:

    Option Explicit
    
    Dim objInfo
    Dim objQue
    Dim objMsg
    Dim strFormatName   ' Destination
    
    strFormatName = "direct=os:.\private$\test"
    
    Set objInfo = CreateObject("MSMQ.MSMQQueueInfo")
    Set objMsg = CreateObject("MSMQ.MSMQMessage")
    
    objMsg.Label = "my message"
    objMsg.Body = "This is a sample message."
    objInfo.FormatName = strFormatName
    set objQue = objInfo.Open( 2, 0 )
    
    ' Send Message
    objMsg.Send  objQue
    
    ' Close Destination
    objQue.Close
    
    Set objMsg = Nothing
    Set objInfo = Nothing
    
    msgbox "Done..."
    

    这件事有点晚了,不过我现在才开始做

    为了补充Richard的答案,您可以创建公共队列。 但您需要主机名和对该计算机的管理员访问权限

      public static MessageQueue CreatePrivate(string name) {
            string path = string.Format(@".\private$\{0}", name);
            if (!MessageQueue.Exists(path)) {
                MessageQueue.Create(path);
                return new MessageQueue(path);
            }
            return new MessageQueue(path);
        }
    
        public static MessageQueue CreatePublic(string hostname,string queuename) {
            string path = string.Format(@"{0}\{1}", hostname,queuename);
            if (!MessageQueue.Exists(path)) {
                MessageQueue.Create(path);
                return new MessageQueue(path);
            }
            return new MessageQueue(path);
        }
    }
    

    Richard,你知道如何在C#中以编程方式设置权限吗?使用AccessControlList设置权限,然后使用“queue.SetPermissions()”。请注意,MessageQueue.Create将返回队列。我发现这篇文章对AccessControlList很有帮助。您好,您可以创建公共队列。我永远不会批准@GregoryCurrie的编辑。它应该只使用System.Messaging
    。我已经更改了编辑。我只使用…=当我有名字冲突时。
    
      public static MessageQueue CreatePrivate(string name) {
            string path = string.Format(@".\private$\{0}", name);
            if (!MessageQueue.Exists(path)) {
                MessageQueue.Create(path);
                return new MessageQueue(path);
            }
            return new MessageQueue(path);
        }
    
        public static MessageQueue CreatePublic(string hostname,string queuename) {
            string path = string.Format(@"{0}\{1}", hostname,queuename);
            if (!MessageQueue.Exists(path)) {
                MessageQueue.Create(path);
                return new MessageQueue(path);
            }
            return new MessageQueue(path);
        }
    }