How to change Msmq configuration from workgroup mode to domain mode?
Asked Answered
N

5

19

There is a public queue named queue1 on machine A. I want to send messages to this queue from machine B. In order to achieve this, I wrote that c# code.

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

But Exists() method return false on machine B. The same code works well on machine C.

I found somethings related with msmq domain mode and workgroup mode. I think that msmq installed in workgoup mode on machine B.

How can I change this configuration from workgroup mode to domain mode?

Nepali answered 4/2, 2010 at 9:52 Comment(0)
B
19

HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters\

Check the data for the REG_DWORD workgroup. Is it 1 or 0?

  • 1 is workgroup mode.
  • 0 is AD mode
Belita answered 21/7, 2011 at 8:39 Comment(0)
D
18

Basically the difference between domain and work group mode is not defined by the value of the registry flag "workgroup" mentioned by @engin. This flag just reflects current operational mode but doesn't set it.

Whether you run in domain or workgroup mode is defined whether you installed MSMQ on domain controller or on a member server. Details about differences between these two modes can be found here: https://support.microsoft.com/en-us/kb/884974/

MSMQ 1.0 used to support domain mode only. Current MSMQ version is 5.0.

Next you may see quite interesting behavior when you installed MSMQ on your DC, your workgroup flag continuously reverts to 1 after each MSMQ service restart. This means that you have to grant Network Service account the Create MSMQ Configuration Objects permission to the computer object in Active Directory Domain Services before installing the Directory Services Integration feature on a computer that is a domain controller.

You may find details on how to do it here: https://technet.microsoft.com/en-us/library/cc730960.aspx
MSMQ runs under the (less privileged) Network Service account instead of (all powerful) Local System account starting from version 4.0 (Vista/Server 2008)

So to answer @mkus question more directly to "set" domain mode you just install MSMQ on domain controller and make sure that proper permissions in place for Network Service account. Once this is done you well see it operating in domain mode with workgroup flag switched to 0 automatically to reflect this.

Also couple of links to clarify issues around MSMQ objects permissions and when/why you need to set them: http://blogs.msdn.com/b/johnbreakwell/archive/2009/08/03/default-msmq-queue-permissions-have-changed-in-msmq-4-0.aspx. In short starting from MSMQ 4.0 Everyone and Anonymous Logon were removed from default MSMQ objects ACLs as precaution against DoS attacks (though there are exlusions to this change and Workgroup mode is one of those).

And as you may read in Technet article below you need to go a grant certain rigts to MSMQ objects either to Network Service OR to Computer accounts when installing the Routing Service feature on a Windows Server 2008 R2 (or later) computer that is not a domain controller OR when installing the Directory Service Integration feature of Message Queuing on a Windows Server 2008 R2 (or later) computer that is a domain controller. See details here: https://technet.microsoft.com/en-us/library/cc749102(v=ws.10).aspx

Divisionism answered 11/4, 2015 at 11:32 Comment(2)
This is the correct answer for a domain controller install. See this link from Mikhail technet.microsoft.com/en-us/library/cc730960.aspxMadagascar
Any idea how to do anything you say on windows 10?Professionalize
A
8

Run Server Manager on the machine that is hosting the queue. Right-click on Features and click "add features"

Drill down under Message Queuing and under Message Queuing Services. You should see a checkbox for Directory Service Integration.

Check it and click install.

Usually you have to reboot the server for it to show the change.

Aerodontia answered 8/12, 2010 at 15:55 Comment(0)
M
5

I ran into some problems, no matter how much I installed or uninstalled MSMQ or restarted, I still wasn't able to use the queue. So I wanted to post some links here

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

When it gets to a part about "To work around this problem, use the Active Directory Users and Computer Microsoft Management Console (MMC)...". Below is how you do that.

How to delete from active directory http://technet.microsoft.com/en-us/library/cc773660(v=WS.10).aspx "Delete stale computer objects" is the part you are interested in.

I also found this nice error in the event log "The Message Queuing service will not join the domain. An MSMQ Configuration (msmq) object exists in the new domain with an ID differing from the service ID. Please delete the MSMQ Configuration object in the new domain, restart the Message Queuing service, and log on again."- which helped to point out they way.

Marlowe answered 12/6, 2014 at 20:25 Comment(1)
I have run into this same problem and found another document that was helpful. MSMQ Installation Limitations section technet.microsoft.com/en-us/library/cc749102(v=ws.10).aspxPhoto
P
0

I have face this issue for windows server 2016, where even thought I was changing registry value to domain mode "0", it reverts to "1", after server restart.

To solve the issue on OS 2016, we need to uninstall below MSMQ feature as they are deprecated from OS 2016 onward. Message Queuing Trigger Multicasting support Routing Service

Protractor answered 24/12, 2019 at 9:33 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.