我如何设置消息队列的所有者?
作者:互联网
System.Messaging.MessageQueue类没有提供设置队列所有权的方法.如何以编程方式设置MSMQ消息队列的所有者?
解决方法:
简短的答案是p /调用对Windows api函数MQSetQueueSecurity
的调用
void SetOwner(MessageQueue queue, byte[] sid, bool ownerDefaulted = false)
{
var securityDescriptor = new Win32.SECURITY_DESCRIPTOR();
if (!Win32.InitializeSecurityDescriptor(securityDescriptor, Win32.SECURITY_DESCRIPTOR_REVISION))
throw new Win32Exception();
if (!Win32.SetSecurityDescriptorOwner(securityDescriptor, sid, ownerDefaulted))
throw new Win32Exception();
if (Win32.MQSetQueueSecurity(queue.FormatName, Win32.OWNER_SECURITY_INFORMATION, securityDescriptor))
throw new Win32Exception();
}
可以在github上找到定义System.Messaging.MessageQueue的SetOwner扩展方法的完整类.