При установке программы на терминальном сервере под управлением Windows Server 2003, обратил внимание, что установка идет чрезвычайно долго. Вооружившись инструментами Process Explorer и Process Monitor от Sysinternals определил источник проблем.
Как оказалось, висит процесс MSIExec (Windows Installer) при этом потребляя много процессорного времени — полностью было загружено одно ядро на 100%.
Запустив Process Monitor и настроив его только для фильтрации событий от службы msiexec, увидел в логе событий много операций чтения из реестра:
В примере приведен лишь один GUID из великого множества.
Запустив редактор реестра, обнаружил по пути (HKEY_USERS\.DEFAULT\Software\Hewlett-Packard) огромное количество записей подобных этим:
После этого программа установилась в течении минуты.
Затем я из бекапа ветки рестра взял несколько строчек, которые были не связаны с GUID принтеров и импортировал их обратно.
Опытным путём выяснилось, что запись в реестре создается каждый раз, когда пользователь входит на терминальный сервер и подключается сетевой принтер. При повторном входе пользователя и подключении этого принтера создается еще одна запись в ветке HKEY_USERS\.DEFAULT\Software\Hewlett-Packard.