删除 MSMQ 中的所有私人队列?

删除 MSMQ 中的所有私人队列?

MSMQ 中有没有办法删除所有私人队列?

我的计算机上有数千个私人队列,我相当肯定其中大多数(如果不是全部)都是由行为不良的应用程序引起的,该应用程序每次启动时都会创建一个以随机 GUID 为名称的新队列。

现在我想创建几个其他私有队列来与 MSMQ 一起工作,我发现当我在计算机管理工具中打开私有队列时,数千个未使用的现有队列不仅使视图变得混乱,而且我怀疑它们是在我的计算机上打开计算机管理中的私有队列需要很长时间的原因。

我可以通过选择一个队列并点击删除来删除单个队列,但似乎没有明显的方法来选择要一起删除的队列范围。

答案1

我不确定您使用的 Windows 版本,但我假设您安装了 MSMQ 3.0。在这种情况下,您可以使用 VBS 查询所有私有 MSMQ 对象并调用MSMQ 应用程序对象中的私有队列属性并将它们存储为变体。

然后,我会循环浏览你的变体并使用删除 MSMQQueueInfo 的属性并删除每个队列。

希望有所帮助。

答案2

您还可以使用下面的代码编写一个小程序。

请注意,你的项目应该引用 System.Messaging

using System.Messaging;

。 。

MessageQueue[] msmques = MessageQueue.GetPrivateQueuesByMachine(".");
foreach (var item in msmques)
{
        MessageQueue.Delete(".\\"+item.QueueName);
}

相关内容