6

Message QueuesWindows 2003x64/2008R2 サーバーでプログラムを使用していくつか作成しようとしています。キューが作成されると、Windows は自動的に既定のアクセス許可をキューに適用します。

MSMQ 4 の場合、デフォルトで次のユーザーが追加されます

  • みんな
  • キューの作成者
  • 匿名ログイン

を使用してキューのアクセス許可を設定するMessageQueue.SetPermissions()と、指定AccessControlListしたものがデフォルトのセキュリティ アクセス許可にのみ追加されます。

デフォルトのアクセス許可を削除または上書きする方法はありますか? この MSDN の記事の一番下には、次のように記載されています。

ただし、デフォルトはハードコーディングされているため、カスタマイズすることはできません。

キューの設定は、C:\Windows\System32\msmq\storage\lqs. このファイルには、キューのアクセス許可を表す Security プロパティがあります。このキーを編集することはオプションでしょうか? ただし、これを行うと、私には少し奇妙に思えます。

AccessControlListキューの既定のセキュリティ アクセス許可を上書きする独自のアクセス許可を指定する適切な方法を探しています。作成時または作成後のいずれかです。

どんな助けでも大歓迎です、

ありがとう。

4

3 に答える 3

12

これらの既定のグループへのアクセス許可を削除または取り消すことができない場合は、いつでもアクセス許可を拒否することができます。拒否は許可よりも優先されます。このコードは機能します:

MessageQueue queue = new MessageQueue(".\\Private$\\QueueName");
queue.SetPermissions("Everyone", MessageQueueAccessRights.ReceiveMessage,
        AccessControlEntryType.Deny);

ただし、権限の取り消し ( AccessControlEntryType.Revoke) も機能するはずです。コードにエラーがある可能性があります。私のマシンで動作します。

記事には次のように書かれています。

ただし、デフォルトはハードコーディングされているため、カスタマイズすることはできません。

つまり、キューの作成中に付与される権限を変更することはできませんが、後で変更することはできます。

編集:OS言語から独立した「全員」を取得するには: 「全員」のIdentityReferenceを取得して、ローカライズされたシステムでMutexAccessRuleを作成する方法は?

于 2012-05-03T07:12:29.270 に答える
6

ACL についてもまったく同じ問題がありました。SetPermissions() メソッドに切り替えたところ、動作が大幅に改善されました。

以下のコードは私のために働きます:

                queue.SetPermissions(
                    "Everyone",
                    MessageQueueAccessRights.FullControl,
                    AccessControlEntryType.Allow);
                queue.SetPermissions(
                    "ANONYMOUS LOGON",
                    MessageQueueAccessRights.FullControl,
                    AccessControlEntryType.Allow);
于 2012-09-28T21:11:32.953 に答える