System.Messaging.MessageQueue クラスは、キューの所有権を設定する方法を提供しません。MSMQ メッセージ キューの所有者をプログラムで設定するにはどうすればよいですか?
質問する
1394 次
1 に答える
6
簡単な答えは、Windows API 関数への呼び出しを p/invoke することです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();
}
SetOwner
拡張メソッドを定義する完全なクラスは、githubSystem.Messaging.MessageQueue
にあります。
于 2012-06-30T04:35:43.850 に答える