Поделиться через


How to get the WS-AT Transactions Tab in DCOMCNFG ?

If you worked with Distributed Transactions, you may already be aware that they are configured in “Component services” MMC. We can also configure WS-AT transactions in “Component Services”, but there are a few steps required to configure it properly. In this blog I will talk about how to enable this functionality in the MMC and the various issues that you can run into while configuring it.

By default on a new installation of any Operating System, the WS-AT TAB is not present in the Component Services MMC under the MSDTC settings and this is how the default UI looks like.

clip_image001

WsatUI.dll is the managed UI Extension DLL that contains this TAB functionality and it needs to be registered using the regasm tool.

So where to get WSATUI.DLL from?

This DLL ships as a part of the Windows SDK for .NET Framework and if the machine has.NET Framework 4.0, you need to install the Windows 7 SDK for .NET Framework 4.0 from https://www.microsoft.com/en-us/download/dlx/listdetailsview.aspx?id=8279 and if the machine has the .NET Framework 3.0 or .NET Framework 3.5 installed, then you can install the Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 from https://www.microsoft.com/en-us/download/details.aspx?id=3138. It is a huge download and it can take some time to download and install. Also don’t get confused by the name of the SDK – the name says Windows 7 SDK for .net framework 4.0 but this can be installed on Windows Server 2003 or Windows Server 2008 also. To make it a bit more clear, the Windows 7 SDK for .net framework 4.0 is a Software development Kit for creating apps that run on Windows 7 and .Net Framework and can be installed on prior operating systems too.

Another important thing to note is that you shouldn’t worry about the CPU architecture or the version of .NET Framework that you are using in your application because this DLL is used by Component Services MMC only and your application will never be using this DLL directly. So even if your application uses .NET Framework 3.0 or 3.5 on a machine that has .NET 4.0 installed, you should still install the Windows 7 SDK for .NET Framework 4.0

Registering the WSATUI.DLL

After the installation open the SDK Command shell from the Start -> Programs -> Microsoft Windows SDK <version_number> menu (on VISTA and above operating systems, right click on the Command shell and choose “Run As Administrator” and run the right REGASM command (assuming you installed the SDK in the default locations)

Table 1

Operating System Processor Architecture

 

Highest Version of Framework installed on the computer

 

Installed SDK Version

 

Command to Run

 

32 Bit

 

 

 

3.0 , 3.5

 

 

 

V6.0

 

Regasm /codebase “c:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\WsatUI.dll”

 

V6.1

 

Regasm /codebase “c:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\WsatUI.dll”

 

v7.0

 

Regasm /codebase “c:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\WsatUI.dll”

 

4.0

 

 

 

(see note below)

 

v7.1

 

Regasm /codebase “c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\WsatUI.dll”

 

64 Bit

 

3.0 or 3.5

 

 

 

V6.0

 

Regasm /codebase “c:\ Program Files\Microsoft SDKs\Windows\v6.0\Bin\x64\WsatUI.dll”

 

V6.1

 

Regasm /codebase “c:\ Program Files\Microsoft SDKs\Windows\v6.1\Bin\ x64\WsatUI.dll”

 

v7.0

 

Regasm /codebase “c:\ Program Files\Microsoft SDKs\Windows\v7.0\Bin\ x64\WsatUI.dll”

 

 

 

4.0

 

 

 

(see Note below)

 

v7.1

 

Regasm /codebase “c:\ Program Files\Microsoft SDKs\Windows\v7.1\Bin\ x64\WsatUI.dll”

 

NOTE: The version of Windows 7 SDK for .NET Framework 4.0 have an issue that while running the regasm command you may get an error complaining about the assembly Authenticode signatures and you may get an error like this.

C:\Program Files\Microsoft SDKs\Windows\v7.1>regasm /codebase "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\wsatui.dll" Microsoft (R) .NET Framework Assembly Registration Utility 4.0.30319.1 Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved. RegAsm : error RA0000 : Could not load file or assembly 'WsatUI, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)

This happens due to a small issue in the file that is packaged in the SDK. If you run in to this issue, you can do one of the two things to fix this problem

  • Turn off strong name validation just on the WSATUI.DLL by running the following command from the same SDK CMD shell

C:\Program Files\Microsoft SDKs\Windows\v7.1>sn -Vr "c:\Program Files\Microsoft SDKs\Windows\v7.1\bin\wsatui.dll" Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.1 Copyright (c) Microsoft Corporation.  All rights reserved. Verification entry added for assembly 'WsatUI,B03F5F7F11D50A3A'

After this you should be able to run the REGASM command

  • If you don’t want to turn off the strong name validation on this DLL, then you need to replace the WSATUI.DLL in the folder c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\ with the DLL from a machine which has got Visual Studio 2010 installed. On a machine that has Visual Studio 2010 installed, you can get this DLL from the folder C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\WSATUI.dll and copy it to the destination server. Once that is done you can run the regasm command and it should work.

If the above steps are followed, the DLL’s should be registered correctly and you should be able to see the WS-AT tab, however if this is not done correctly or if there is some kind of a version mismatch, you may see an error like the below one when you try to go to the WS-AT TAB in the Component Services

The error “The installed version of Windows Communication Foundation does not match the version of the WSAT configuration tool” will come if the version of the WSATUI.DLL registered on the server is lower than the highest version of the framework installed on the server. To check the highest version of .net framework installed go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP and look for the highest version. So from the below screenshot, you can see that the machine has .net framework 4.0 installed

clip_image002

The next thing to check is the version of the WSATUI.DLL that is registered on the server and that can be looked inside HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WSAT\3.0. This key will have a string value called PATH and that will tell us the location of the WSATUI.DLL.

image

If the location of WSATUI.DLL shows as 6.0,6.1 or 7.0 , WSATUI.dll will only support 3.5 Framework version. If it shows as registered from v7.1 path, it can work with 4.0 framework version.

So if you see that the version of the .NET Framework installed on the machine is higher than the version that WSATUI.DLL supports, then follow the combinations given in the Table-1 (above in this article) and install the right version of SDK and register the WSATUI.DLL from the correct path and that should fix this error.