The DTC service cannot start

If you cannot get the DTC service to start and see the following error whenever you try starting it, check the registry value HKLM\SOFTWARE\Microsoft\MSDTC\SysprepInProgress.

The Distributed Transaction Coordinator service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services.

If the value is 1, change it to 0 and try starting DTC again, which may resolve your problem. It is by design that DTC cannot run during sysprep. The default value of SysprepInProgress is 0, indicating the system is not in the middle of sysprep. How can this value become 1? One possibility is the machine was created with sysprep and a previous run failed.

The SysprepInProgress registry value is set during the MSDTC setup. Open the C:\windows\ DtcInstall.log and you could see the differences at the bottom of the log file between a good installation and a bad installation.

Good_DtcInstall.log


08-12-2013 15:07 : DTC Install error = 0, SysPrepDtcSpecialize : Enter, d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1897)
08-12-2013 15:07 : DTC Install error = 0, SysprepDtcSpecialize: SysprepInProgress == 0. DTC has been already specialized., d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1915)
08-12-2013 15:07 : DTC Install error = 0, SysPrepDtcSpecialize : Exit, d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1959)

Bad_DtcInstall.log


12-20-2013 13:18 : DTC Install error = 0, SysPrepDtcSpecialize : Enter, d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1897)
12-20-2013 13:18 : DTC Install error = 0, SysprepDtcSpecialize: SysprepInProgress == 0. DTC has been already specialized., d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1915)
12-20-2013 13:18 : DTC Install error = 0, SysPrepDtcSpecialize : Exit, d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1959)
01-14-2014 13:01 : DTC Install error = 0, SysPrepDtcCleanup : Enter, d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1763)
01-14-2014 13:01 : DTC Install error = 0, SysPrepDtcCleanup : Exit, d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1814)
01-14-2014 13:01 : DTC Install error = 0, SysPrepDtcGeneralize : Enter, d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1820)
01-14-2014 13:01 : DTC Install error = 0, SysPrepDtcGeneralize : Exit, d:\w7rtm\com\complus\dtc\dtc\adme\deployment.cpp (1891)

SysPrepDtcSpecialize sets the value to 0 and SysPrepDtcGeneralize sets SysprepInProgress to 1

If SysprepInProgress is not your cause, you can consider the process documented in Disaster Recovery for MSDTC on Windows Server 2003 and 2008.