Как маленький является "очень маленьким"? Пользовательский оборот достаточно действительно высоко, что это стоит инвестировать в инфраструктуру управления пользователями? Если это - пару раз вещь, возможно, лучший способ решить, это с системой билета справки, которой Вы отвечаете.
Если действительно важно делегировать эту способность, насколько технический человек, который сделает это? Они могли обработать sshing в сервер и выполнение cyradm
из командной строки? (Или использование его удаленно, но я не думаю, что это поддерживает ssl, таким образом, это не так безопасно.)
Другой подход должен был бы иметь сервер, проходят проверку подлинности против каталога LDAP, и компания могла использовать любое количество типичных инструментов LDAP-ведения-счетов. Действительно ли компания является магазином Linux, или действительно ли они центральны Windows? Возможно, у них уже есть AD сервер, даже.
При сбое этого, там существует проект, названный сетью-cyradm, которая могла бы сделать то, что Вы хотите. Я никогда не использовал его, все же.
На самом деле было две проблемы.
Во-первых, при наличии политики замыкания на себя нужно быть осторожным с rsop.msc, потому что просто используется значение по умолчанию (т. Е. Отметка " переход к последней странице мастера без сбора дополнительных данных «сразу после выбора контейнеров пользователя и компьютера» может не отражать истинные результаты политики. Чтобы получить реалистичные результаты, нужно хотя бы поставить галочку на второй странице (и заменить или объединить). Соблюдение осторожности помогает правильно диагностировать , если сценарий будет запущен при выходе из системы.
Во-вторых, SetStringValue
создает значения, если они не существуют раньше, но это не создать несуществующие ключи. Следовательно, в сценарии необходимо ввести
oReg.CreateKey HKCU, "SOFTWARE \ Foo"
(для записи
Я представляю вас используют reg.exe
для изменения записей реестра. Проблема в том, что reg.exe
выполняется в отдельном процессе, и сценарий выхода из системы только ожидает своего завершения. Поэтому вполне вероятно, что куст реестра будет выгружен до того, как будет выполнено редактирование.
Я думаю, вы можете решить проблему, используя две строки WScript, как в следующем примере:
Set objShell = CreateObject("WScript.Shell")
objShell.Run "REG ADD HKCU\key ...",,true
Третий параметр objShell.Run
], называемый bWaitOnReturn
, сообщает скрипту дождаться завершения внешнего процесса, прежде чем продолжить выполнение.
Я довольно часто использую сценарии выхода из системы. Реестр пользователя все еще загружается при запуске сценария, и в его реестр можно вносить изменения. По умолчанию сценарии выхода из системы выполняются синхронно. У меня есть сценарии выхода из реестра, которые читаются из реестра пользователя, но мне никогда не приходилось писать. Даже в этом случае, я ожидаю, что он будет работать нормально.
Я взял ваш фрагмент кода выше, поместил его в файл и назначил его как сценарий выхода из локальной групповой политики на виртуальной машине Windows XP SP3 и получил желаемый результат. Я установил HKCU \ Software \ Foo \ Bar
равным xxx
, вышел из системы, снова вошел в систему и обнаружил, что значение было изменено на Baz
, как и ожидалось.
Я думаю, у вас другая проблема, помимо исполнения скрипта. Я добавил в код вызов MsgBox
, чтобы я мог «видеть» код, выполняющийся при выходе из системы. Добавление MsdBox не повлияло на поведение, связанное с реестром, но дало мне визуальное указание на то, что код запущен (и задержал выход из системы, пока я не закрыл диалоговое окно).
(Я могу продолжить и протестировать на Windows 7 тоже , если хотите, но я не ожидаю никаких изменений в функциональности.)