Ответ 1
Существует несколько способов добиться того, чего вы хотите - одного clunkier, чем другого. Серверы терминалов могут быть кошмаром для развертывания - у пользователей может не быть прав на запуск 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" может быть "runnable", и в вашем случае я бы предложил не запускать 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 для параметров реестра.