System.Messaging.MessageQueue 类不提供设置队列所有权的方法。如何以编程方式设置 MSMQ 消息队列的所有者?
简短的答案是 p/invoke 对 windows api 函数的调用MQSetQueueSecurity http://msdn.microsoft.com/en-us/library/windows/desktop/ms705190%28v=vs.85%29.aspx
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();
}
一个完整的类,定义了SetOwner
扩展方法System.Messaging.MessageQueue
可以找到github https://github.com/gavacho/System.Messaging.MessageQueue.SetOwner
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)