其他分享
首页 > 其他分享> > 我如何设置消息队列的所有者?

我如何设置消息队列的所有者?

作者:互联网

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扩展方法的完整类.

标签:msmq,c
来源: https://codeday.me/bug/20191101/1981408.html