Обновление реестра каждого профиля в 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"

Другие вопросы по тегам