web-dev-qa-db-ja.com

開いたときにwindowsQUEUEMESSAGESエラー-メッセージのリストを取得できません。エラー:アクセスが拒否されました

問題:

Windows Server 2003でWindows「QUEUEMESSAGES」を開くと、エラーメッセージが表示されました。

"The list of messages cannot be retrieved. Error: Access is denied"

どうして?

次の手順に従って再作成しました。

  • Windows Server2003標準64ビット
  • マイコンピュータを右クリック
  • [管理]を選択します
  • サービス
  • メッセージキュー
  • プライベートキュー
  • MYSERVICE
  • キューメッセージ

表示されるエラーメッセージ:

"The list of messages cannot be retrieved. Error: Access is denied."

現在展開されているセットアップ/構成:

  • ローカル管理者としてログインしました。
  • マシンはスタンドアロンです。
  • WCFサービスが実行されています(WCF固有のユーザーを使用)
  • WCFユーザ​​ーアカウントは、ローカルのADMINグループのメンバーです。
  • ドットネット4.0。
  • メッシングキューイングサービスが実行されています(ローカルシステム)
  • おそらく、アクセス許可の問題がエラーを作成しています。
3
scott_lotus

これは、.NETサービスがプライベートキューのアクセス許可から「Everyone」グループを削除した場合に発生する可能性があります。これを解決するために実行できるいくつかの手順は次のとおりです。

  1. MSMQサービスを停止します
  2. フォルダC:\ WINDOWS\system32\msmq\storage\lqsを開きます
  3. キューを説明するこのフォルダー内のファイルを見つけます-(incommingQueue)
  4. メモ帳を使用して、適切なセキュリティ権限を持つ他のプライベートキューのlqsファイルを開きます。 (他にプライベートキューがない場合は作成します)
  5. Security = ...で始まるファイル内の行を見つけます。
  6. 行全体をクリップボードにコピーします(ワードラップに注意してください。この行はかなり長くなります)
  7. 問題のあるキューのlqsファイルをテキストエディタで開きます
  8. このファイルのSecurity = ...行をクリップボードの内容で上書きします
  9. 変更したlqsファイルを保存します
  10. MSMQサービスを開始します

問題のあるキューには、上記の手順6でセキュリティ設定をコピーしたキューと同じ権限があることがわかります。

4
scott_lotus

@scott_Lotusの回答で説明されているように、キューファイルのセキュリティ文字列値を編集すると、エラーが発生しやすくなり、実際にはキューACLで何をしているのかわかりません。また、@ Ishが述べたように、メッセージキューサービスが停止している場合でも、このファイルへの変更の書き込みで問題が発生する可能性があります。

これを行うためのより良い方法は、Active Directoryユーザーとコンピュータースナップイン(別名ADUC(dsa.msc))を使用することです。このスナップインの[表示]で、[ユーザー、連絡先、グループ、およびコンテナーとしてのコンピューター]オプションと[高度な機能]を有効にして、MSMQキューがホストされているコンピューターオブジェクトを見つけて展開できることを確認します。ファイル/フォルダーACLを操作するのと同じ方法で、プロパティを呼び出してキューコンテナーACLを編集します(以下のサンプルスクリーンショットを参照)。ほとんどの場合、ACLに変更を加える前に、所有権を取得する必要があります。

enter image description here

0
Mikhail