C# 以编程方式在MSMQ中添加专用队列
我有超过20个队列的列表,需要在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
您只能在本地计算机上创建专用队列。有关详细信息,请参见:对于命令行,您可以创建包含以下内容的.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);
}
}