When you try to install MSMQ, you may encounter this sort of error message:

Error Code: 0x42C Error Description: The dependency service or group failed to start.

On the face of it, this should just be a case of checking the usual suspects that the MSMQ service is defined as depending on in the service properties. Here's the list of dependencies from my various test machines:

Windows XP

  • Distributed Transaction Coordinator
  • Message Queuing access control
  • NT LM Security Support Provider
  • Reliable Multicast Protocol Driver
  • Remote Procedure Call (RPC)
  • Security Accounts Manager

Windows 2003 server

  • Message Queuing access control
  • NT LM Security Support Provider
  • Remote Procedure Call (RPC)
  • RMCAST (Pgm) Protocol Driver
  • Security Accounts Manager

Windows Vista

  • Message Queuing access control
  • Remote Procedure Call (RPC)
  • Windows Event Log

Checking that these are running isn't as easy as it seems as they don't all appear in the Services snap-in. In the dependencies list, system components will have either a cog or PC graphic. Only those with a cog will appear in the Services snap-in. Luckily, the ones that don't (Message Queuing access control and Reliable Multicast/RMCAST) are the ones you are trying to install anyway.

Note - if you get the 0X42c error in the event logs when trying to start MSMQ at a later date, you can use "NET START" to force these components to run (or at least generate an error):

  • Message Queuing access control - NET START MQAC
  • RMCAST (Pgm) Protocol Driver - NET START RMCAST

If you find the components are all running correctly then it is probably the Distributed Transaction Coordinator (DTC) that is causing the problem. MSMQ does expect this service to be available and will try to launch DTC if it is not already running. You will notice that the operating systems after Windows XP do not have a dependency on DTC for MSMQ. The change is because of problems this would create on a cluster. In that environment, MSMQ and DTC do not usually share the same resource group so it would not be unusual for the 'DTC' group to fail over without the 'MSMQ' group doing likewise. If there was a explicit dependency then MSMQ would be restarted by the service control manager whenever DTC failed. This is regarded as too disruptive so the dependency is instead an implicit one.

Note - Windows Vista cannot be clustered but the change has been maintained across the newer operating systems for consistency.

So the next step is to troubleshoot the DTC service. Usually there will be an event log entry from MSDTC explaining what the problem may be, such as described in:

You may receive error code -1073737712 when you try to start the Distributed Transaction Coordinator service in Windows XP or in Windows Server 2003

where the root cause is either a corrupt/missing MSDTC log file or a permissions issue.

Installation problems, like ogres and onions, have layers. Keep removing the layers until you find what's really causing the problem.