【发布时间】:2010-11-28 05:35:49
【问题描述】:
是否可以删除服务用户创建的私人消息队列?在卸载期间,我们想清理我们的应用程序创建的所有消息队列。出于安全目的,对这些队列的访问仅限于当前用户 (ServiceUser)。在卸载过程中,我们拥有管理员权限,但当我们尝试删除队列或修改队列上的权限时,仍然会收到拒绝访问 MessageQueueException。
这里是清理代码:
public void DeleteAppQueues()
{
List<string> trash = new List<string>();
var machineQueues = MessageQueue.GetPrivateQueuesByMachine(".");
foreach (var q in machineQueues)
{
if (IsAppQueue(q.QueueName))
{
trash.Add(".\\" + q.QueueName);
}
q.Dispose();
}
foreach (var queueName in trash)
{
try
{
using (MessageQueue delQueue = new MessageQueue(queueName))
{
delQueue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
}
MessageQueue.Delete(queueName);
}
catch (MessageQueueException ex)
{
// ex.Message is "Access to Message Queuing system is denied."
}
}
}
【问题讨论】: