web-dev-qa-db-ja.com

Msmq構成をワークグループモードからドメインモードに変更するにはどうすればよいですか?

マシンAには_queue1_という名前のパブリックキューがあります。マシンBからこのキューにメッセージを送信したいと思います。これを実現するために、そのc#コードを記述しました。

_if (MessageQueue.Exists("machineA\queue1"))
{
    label1.Text = "queue found";
}
else
{
    label1.Text = "queue could not be found";
}
_

ただし、Exists()メソッドはマシンBでfalseを返します。同じコードがマシンCでうまく機能します。

Msmqドメインモードとワークグループモードに関連するものを見つけました。 msmqがマシンBにworkgoupモードでインストールされていると思います。

この構成をワークグループモードからドメインモードに変更するにはどうすればよいですか?

16
mkus

HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters \

REG_DWORD workgroupのデータを確認してください。 1ですか0ですか?

  • 1はワークグループモードです。
  • 0はADモードです
18
engin

基本的に、ドメインモードとワークグループモードの違いは、 @ engin で言及されているレジストリフラグ「workgroup」の値では定義されません。このフラグは現在の動作モードを反映するだけで、設定はしません。

ドメインモードで実行するかワークグループモードで実行するかは、MSMQをドメインコントローラーにインストールしたかメンバーサーバーにインストールしたかによって定義されます。これら2つのモードの違いの詳細については、次を参照してください。 https://support.Microsoft.com/en-us/kb/884974/

MSMQ 1.0は、ドメインモードのみをサポートするために使用されます。現在のMSMQバージョンは5.0です。

次に、DCにMSMQをインストールすると、非常に興味深い動作が見られる場合があります。MSMQサービスを再起動するたびに、ワークグループフラグが継続的に1に戻ります。これは、ネットワークサービスアカウントにActive Directoryドメインサービス内のコンピューターオブジェクトへのMSMQ構成オブジェクトの作成アクセス許可を事前に付与する必要があることを意味しますドメインコントローラーであるコンピューターにディレクトリサービス統合機能をインストールします。

これを行う方法の詳細については、こちらをご覧ください: https://technet.Microsoft.com/en-us/library/cc730960.aspx
MSMQは、バージョン4.0(Vista/Server 2008)以降の(すべての強力な)ローカルシステムアカウントではなく、(特権の少ない)ネットワークサービスアカウントで実行されます。

したがって、 @ mkus の質問に直接答えて、ドメインモードを「設定」するには、ドメインコントローラーにMSMQをインストールし、ネットワークサービスアカウントに適切なアクセス許可が設定されていることを確認します。これが完了すると、これを反映するためにワークグループフラグが自動的に0に切り替えられたドメインモードで動作していることがわかります。

また、MSMQオブジェクトのアクセス許可に関する問題と、それらを設定する必要がある場合/理由を明確にするためのリンクもいくつかあります。 http://blogs.msdn.com/b/johnbreakwell/archive/2009/08/03/default-msmq -queue-permissions-have-changed-in-msmq-4-0.aspx 。つまり、MSMQ 4.0以降、DoS攻撃に対する予防策として、EveryoneとAnonymous LogonがデフォルトのMSMQオブジェクトACLから削除されました(ただし、この変更には除外があり、ワークグループモードもその1つです)。

そして、以下のTechnetの記事を読むと、MSMQオブジェクトに特定のリグを付与するいずれかネットワークサービスに OR- コンピューターアカウントへドメインコントローラーではないWindowsServer 2008 R2(またはそれ以降)のコンピューターにルーティングサービス機能をインストールする場合ORメッセージのディレクトリサービス統合機能をインストールする場合ドメインコントローラーであるWindowsServer 2008 R2(またはそれ以降)コンピューターでのキューイング。詳細については、こちらを参照してください: https://technet.Microsoft.com/en-us/library/cc749102(v = ws.10) .aspx

14
Mikhail

キューをホストしているマシンでサーバーマネージャーを実行します。機能を右クリックし、「機能の追加」をクリックします

[メッセージキュー]および[メッセージキューサービス]でドリルダウンします。ディレクトリサービス統合のチェックボックスが表示されます。

それを確認し、[インストール]をクリックします。

通常、サーバーを再起動して変更を表示する必要があります。

8
Jeff Davis

MSMQをいくらインストールまたはアンインストールしたり、再起動したりしても、いくつかの問題が発生しましたが、それでもキューを使用できませんでした。だから私はここにいくつかのリンクを投稿したかった

http://support.Microsoft.com/kb/935498

「この問題を回避するには、ActiveDirectoryユーザーとコンピューターMicrosoft管理コンソール(MMC)...」に関する部分に到達します。以下はその方法です。

Active Directoryから削除する方法 http://technet.Microsoft.com/en-us/library/cc773660(v = WS.10).aspx 「古いコンピューターオブジェクトを削除する」はあなたの一部ですに興味がある。

また、イベントログ「メッセージキューサービスはドメインに参加しません。MSMQ構成(msmq)オブジェクトがサービスIDとは異なるIDで新しいドメインに存在します。MSMQ構成オブジェクトを削除してください。新しいドメインで、メッセージキューサービスを再起動し、再度ログオンします。」-これは、それらの方法を指摘するのに役立ちました。

4
Cyrus Downey

Windows Server 2016でこの問題が発生しました。レジストリ値をドメインモード「0」に変更しようとしても、サーバーを再起動すると「1」に戻ります。

OS 2016の問題を解決するには、OS 2016以降で非推奨となるため、以下のMSMQ機能をアンインストールする必要があります。メッセージキュートリガーマルチキャストサポートルーティングサービス

0
Upendra Gughane