You would not normally have to reinstall MS DTC on Windows XP because it's files are protected by WFP (Windows File Protection).

If you find a need to reinstall MS DTC, Microsoft has written a Knowledge Base Article, 891801 - How to reinstall Microsoft Distributed Transaction Coordinator on a computer that is running Windows XP.

Unfortunately, the processes that the article describes can take you hours to accomplish.

I have written 3 scripts to allow you to accomplish the required tasks in only a few minutes.

To reinstall MS DTC by using these scripts, perform the following steps:

1. Make sure that all transactions have completed.

2. Open a CMD.EXE window and type MSDTC1 Filename, where Filename is the full path to a file that will be created to restore all services to their current Start value.

3. Shutdown and restart Windows XP.

4. Open a CMD.EXE window and type MSDTC2.

5. When step 4 finishes, and all disk activity stops, type MSDTC3 FileName, where Filename is the full path to the file that you created in step 2.

6. Shutdown and restart Windows XP.

7. Open a CMD.EXE window and type %WINDIR%\System32\msdtc.exe -resetlog.

MSDTC1.bat contains:

                              @echo off                              if \{%1\}

\{\} @echo Syntax: MSDTC1 Filename&goto :EOF setlocal ENABLEDELAYEDEXPANSION set filename=%1 if exist %filename% del /q %filename% ( @echo Alerter @echo EventSystem @echo Browser @echo TrkWks @echo Dnscache @echo Eventlog @echo PolicyAgent @echo dmserver @echo Messenger @echo Netlogon @echo NtLmSsp @echo Netman @echo PlugPlay @echo RpcSs @echo RpcLocator @echo NtmsSvc @echo SamSs @echo lanmanserver @echo SENS @echo Schedule @echo LmHosts @echo winmgmt @echo Wmi @echo W32Time @echo lanmanworkstation )>"%TEMP%\MSDTC1.TMP" call :stopdtc>nul 2>&1 for /f "Tokens=*" %%L in ('reg query HKLM\System\CurrentControlSet\Services^|FINDSTR /I /B /L /C:"HKEY_LOCAL_MACHINE"') do ( set line=%%L set key=HKLM!LINE:~18! call :subkey "!key!" call :testsvc ) endlocal goto :EOF :stopdtc sc stop msdtc goto :EOF :testsvc for /f "Tokens=*" %%c in ('@echo !svc!^|findstr /I /B /E /L /G:"%TEMP%\MSDTC1.TMP"') do goto :EOF set /a start=3 set /a type=0 call :getstart>nul 2>&1 call :gettype>nul 2>&1 if %type% LSS 16 goto :EOF if %start% NEQ 2 goto :EOF sc config !svc! start= demand @echo sc config !svc! start= auto>>%filename% goto :EOF :gettype for /f "Tokens=2,3" %%x in ('reg query "HKLM\System\CurrentControlSet\Services\!svc!" /V type^|FIND "REG_DWORD"') do ( set /a type=%%y ) goto :EOF :getstart for /f "Tokens=2,3" %%x in ('reg query "HKLM\System\CurrentControlSet\Services\!svc!" /V start^|FIND "REG_DWORD"') do ( set /a start=%%y ) goto :EOF :subkey set svc=%~nx1

MSDTC2.bat contains:
@echo off                              setlocal                              @echo %WINDIR%\System32\msdtc.exe -uninstall                              %WINDIR%\System32\msdtc.exe -uninstall                              call :delkey "HKCR\CID"                              call :delkey "HKLM\SYSTEM\CurrentControlSet\Services\MSDTC"                              call :delkey "HKLM\SYSTEM\ControlSet001\Services\MSDTC"                              call :delkey "HKLM\SYSTEM\ControlSet002\Services\MSDTC"                              call :delkey "HKLM\Software\Microsoft\MSDTC"                              @echo %WINDIR%\System32\msdtc.exe -install                              %WINDIR%\System32\msdtc.exe -install                              endlocal                              goto :EOF                              :delkey                              set key=%1                              call :delkeyq %key% >nul 2>&1                              @echo.                               goto :EOF                              :delkeyq                              REG DELETE %key% /F                              
MSDTC3.bat contains:
@echo off                              if \{%1\}\{\} @echo Syntax: MSDTC3 Filename&goto :EOF                              if not exist %1 Syntax: MSDTC3 Filename - %1 was NOT found.&goto :EOF                              setlocal                              set filename=%1                              for /f "Tokens=*" %%r in ('type %filename%') do (                               %%r                              )                              reg add "HKLM\SOFTWARE\Microsoft\MSDTC\XADLL" /F                              regsvr32 mtxoci.dll                              endlocal