Обновление каждого реестра профиля в Windows Server 2003

У меня есть система Windows Server 2003, которая используется для служб терминалов. Мы не используем перемещаемые профили. Мы не используем сценарии входа в систему. У меня есть от тридцати до четырехдесяти учетных записей, которые входят в эту систему и как таковые имеют локальные профили.

Один из пакетов программного обеспечения, которые установлены в этой системе, использует дерево регистрации HKCU/Software для его лицензирования, поэтому каждый пользователь имеет лицензионный ключ в своем локальном профиле.

Как я могу обновить все эти различные профили реестров детерминированным образом?

Ответ 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 для параметров реестра.

Ответ 2

Установите куст реестра программно, измените ключи, затем закройте куст. Кроме того, вы можете использовать PSExec/runas для запуска "обновления ключей" script в качестве этого пользователя, что также решает проблему "изменить HKCU"