Есть несколько способов достичь того, чего вы хотите - один более грубый, чем другой. Терминальные серверы могут быть кошмаром развертывания - пользователи могут не иметь прав для запуска msiexec.exe , и, следовательно, самовосстановление MSI может завершиться неудачей. Вот почему я обычно предпочитаю использовать пакетные файлы , сценарии или reg файлы для той ситуации, с которой вы сталкиваетесь.
Я бы использовал Активную настройку Microsoft . Это просто причудливое название для функции, которая позволяет вам «запускать что-то один раз для каждого профиля при входе в систему». Вот хорошее объяснение: http://www.etlengineering.com/installer/activesetup.txt
Вот пример записи активной настройки для файла MSI (это содержимое файла * .reg):
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\[ProductCode]]
"StubPath"="[SystemFolder]msiexec.exe /q /fou [ProductCode]"
Команда "StubPath" может быть любой "работоспособной", и в вашем случае я бы предложил не запускать msiexec.exe, а использовать vbscript через cscript.exe или какой-либо другой пакетный механизм (CMD, REG, Etc ...) , Причина в том, что я сказал выше: msiexec.exe может быть запрещено запускать для пользователей сервера терминалов. Другими словами, примерно так:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\MyProduct]
"StubPath"="[SystemFolder]cmd.exe /k C:\SomeScript.cmd"
Существуют и другие способы добавления данных в профиль каждого пользователя, например , с помощью объявленных ярлыков MSI и самовосстановления , но я бы не рекомендовал это для терминальных серверов. См. этот ответ serverfault.com для получения информации о проблемах с использованием файлов MSI для настроек реестра.