2

Есть несколько способов добавить или обновить ключ в реестре HKCU. Есть несколько способов изменить рабочую станцию с помощью групповых политик. Я попробовал несколько из них, и я мог бы использовать некоторую помощь.

У меня есть набор из четырех сценариев, которые я собираю для exe с VBSEditor от Adersoft.

Эти скомпилированные скрипты работают очень хорошо и работают быстрее, чем скрипт .vbs.

У меня есть скрипт для запуска, входа в систему, выхода из системы и завершения работы. В настоящее время эти сценарии обращаются к общим ресурсам сервера SQL и сервера (только для входа и выхода), считывают локальный реестр и запускают некоторые команды через объект wscript.shell. Все это работает, как и ожидалось, в пределах, которые задачи, требующие прав администратора, должны выполняться при завершении работы / запуске, а задачи, требующие доступа к сети (файловые ресурсы и сервер sql), должны выполняться при входе и выходе из системы.

Моя проблема возникает при попытке создать и / или изменить раздел реестра в HKCU. Я прекрасно умею читать ключи, и мои скрипты работают при запуске из сеанса входа администратора, но они ничего не делают при запуске во время запуска, выключения, входа в систему или выхода из системы.

Из-за недостатка опыта я не знаю большинства особенностей среды, в которой должны выполняться сценарии групповой политики.

Вот один набор команд, который работает в консоли, но не работает в GPO:

set oRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
strValueName = "NoControlPanel"
oRegistry.CreateKey HKEY_CURRENT_USER, strKeyPath
oRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,drtval

И вот альтернативный метод:

strKeyPath = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
strValueName = "NoControlPanel"
strKP = strKeyPath + "\" + strValueName
o=wshShell.RegWrite(strKP, drtval, "REG_DWORD")

drtval равен 0 или 1 в зависимости от того, включаю я или отключаю инструменты реестра.

Может кто-то видит, что я делаю не так?

Конкретная рабочая станция, на которой я тестирую это XP Pro. У меня есть около 100 таких щенков для управления через GPO.

Любая помощь будет оценена.

1 ответ1

0

После долгих испытаний, проб и ошибок я узнал следующее:

Иногда бывает так, что ключ реестра, который обычно создается в HKCU, также может быть создан в HKLM.

Все примеры, которые я нашел с помощью Google, указывают на изменение ключа HKCU для этого ключа.

Это работает в текущем сеансе, в regedit или с помощью скриптов, и после перезагрузки изменение вступает в силу.

Но использование этого сценария в сценарии завершения работы групповой политики завершается ошибкой.

Ухватившись за соломинку, я изменил улей в скриптовой команде GPO на HKLM и вуаля .. Оно работает.

Я не знаю точно, почему, может быть, «супер-пользователь» мог бы объяснить это для нас, но я никогда не находил это задокументированным таким образом, и я надеюсь, что это поможет кому-то еще избежать нескольких дней стягивания волос.

Исправлено для использования в сценарии выключения групповой политики:

set oRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
strValueName = "NoControlPanel"
oRegistry.CreateKey HKEY_LOCAL_MACHINE, strKeyPath
oRegistry.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,drtval

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .