Обновление реестра каждого профиля в Windows Server 2003
У меня есть система Windows Server 2003, которая используется для служб терминалов. Мы не используем перемещаемые профили. Мы не используем сценарии входа. У меня есть от тридцати до сорока учетных записей, которые входят в эту систему и поэтому имеют локальные профили.
Один из пакетов программного обеспечения, установленных в этой системе, использует HKCU/Software reg tree для своего лицензирования, поэтому каждый пользователь имеет лицензионный ключ в своем локальном профиле.
Как я могу обновить все эти различные реестры профилей детерминистическим способом?
2 ответа
Есть несколько способов достичь того, чего вы хотите - один более грубый, чем другой. Терминальные серверы могут быть кошмаром развертывания - пользователи могут не иметь прав на запуск 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 для параметров реестра.
Смонтируйте улей реестра программно, измените ключи и закройте улей. В качестве альтернативы вы можете использовать PSExec/runas для запуска сценария "обновить ключи" от имени этого пользователя, что также решает проблему "редактирования HKCU"