Exchange Server 2007 Setup – 5

My idea of covering the setup in different parts was to cover up everything in pieces and try to keep everything short but sweet. Discontinuing the previous series of 4 posts I will have to admit that it is not possible because this software plays around almost every component of the operating system and I find it harder than ever to explain all these things in another series of posts. Honestly, that sounds like I am not a geek and an expert of Exchange Server ;) well, I am not.
Recent few posts were talking about the integration of Exchange Server with Active Directory and windows as an operating system; a platform; a base. Indeed, this base is based on a core component of its own registry. Exchange plays a lot with this stuff by reading, creating, setting up values and then cleaning up values those are not really required anymore. Why collect garbage and preserve it? I have tried covering up a summary of recent 4 posts as well as some new addition to it and then some more new information on how does exchange gets tightly integrated with Registry too.
Most of us are aware that whenever an Exchange Server is installed on some windows based box the exchange setup program will create some new registry entries under HKLMSystemCurrentControlSetServices. This is the place most of the settings are stored which directly affect the behavior of Exchange Server. This data is mostly related to the local configuration of services, performance counters, user interface counters and their values. These registry entries control the output of performance and logs related settings for a specific instance or all the instances of exchange.
I am targeting those registry entries which are created during the setup is running and are not stored under the registry location HKLMSystemCurrentControlSetServices. The first set of such entries goes here:

HKLMSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersCommon Templates
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersFonts
HKLMSoftwareMicrosoftWindowsCurrentVersionUninstallMicrosoft ExchangeModifyPath
HKLMSoftwareMicrosoftWindowsCurrentVersionUninstallMicrosoft ExchangeUninstallString
HKLMSoftwareMicrosoftWindowsCurrentVersionUninstallMicrosoft ExchangeDisplayIcon

Exchange is a standard installation program built around Microsoft Installer (MSI) and does support standard MSI attributes for installation and so does keep track of its uninstall information as well. The file you are seeing in above table is exsetupui.exe is the actual Exchange Server installation exe. After you double click the setup program on your installation media and the setup starts copying required files to the temp folder on local hard disk drive the standard setup.exe hands over the control to exsetupui.exe and remains in the memory. Rest of the stuff is performed by exsetupui.exe
Do you still remember the last image embedded in my previous post? It was a screen shot of registry editor on an Exchange Server.
HKLMSOFTWAREMicrosoftExchangev8.0AdminTools is the location where the temporary information of Exchange Server management console is stored. I intentionally wrote “Temporary” because some of the values below this location are going to be wiped off the registry upon the exit of installer. So a couple of registry locations those are deleted from the registry are:

HKLMSOFTWAREMicrosoftExchangev8.0AdminToolsAction
HKLMSOFTWAREMicrosoftExchangev8.0AdminToolsWatermark

All of the above locations in the registry can be seen getting created, modified and deleted during the setup is running on your windows server 2003 box. It was indeed not possible for me to mention all of the locations where exsetupui.exe plays with registry because of the limitation of size text that I can post on my blog. So, what is next? What does it do with the Service Control Manager (SCM)? If you are really curious to understand the architecture of any setup program you will definitely have this question on your mind. Well, let me not make it more complex. In simpler terms, SCM database is a linking to the registry location HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices and is controlled by services.exe. This is the location that controls the startup behavior and logon behavior of the services installed on some windows server system. Off course! Exchange does install its own registry entries in the SCM as well. Just expand to the node mentioned in earlier sentence and you will find some more information about what entries are created and dependencies of each entry are located in their sub keys named “DependOnService”. Did you see something more listed below HKLMSYSTEMCurrentControlSet00xServices? Well, don’t worry about it. If you have heard of Last Good Known Configuration (LKG) then utility it won’t be hard enough for you to co relate what does that location and all the entries below it mean there. You will notice the names of services those are required to be started before the relative Exchange services is started. SCM database contains more than 90 Service entries related to Microsoft Exchange Server 2007 if MBX, CAS, HT and UM server roles are installed on the same server.
That brings me to the end of Exchange Server 2007 integration with local machine and its registry but I would strongly like to drag your attention to the article http://msdn.microsoft.com/en-us/library/ms724072(VS.85).aspx before you conclude anything. Because, Windows Server 2003 x64 registry architecture is not exactly similar to as in windows server 2003 32 bit. So I would strongly recommend you to look at the article to understand the registry key location and changes if you are looking at a windows server 64 bit system registry. I would definitely not miss the chance to post another article on it. Indeed, I would like to thank my friend Dilbagh for helping to understand the registry structure.