изменить значение реестра для текущего зарегистрированного пользователя Windows при запуске скрипта от имени пользователя SYSTEM (пакетная) - PullRequest
0 голосов
/ 12 марта 2020

У меня есть этот код в пакетном скрипте.

REG ADD HKEY_CURRENT_USER\MyKey /ve /t REG_DWORD /d 1 /f

Проблема в том, что скрипт запускается с использованием системной учетной записи в качестве запланированной задачи в Windows. При использовании системной учетной записи для запуска задачи она не применяет значение к текущему зарегистрированному в реестре пользователя Windows. Я не смог найти способ настроить задачу на использование текущего пользователя, вошедшего в систему, поэтому пришлось настроить его на использование системной учетной записи.

Я пытался использовать это решение; однако это не относится к текущему зарегистрированному пользователю, поскольку файл NTUSER.DAT используется другим процессом.

Я также попытался импортировать файл .reg; однако это также не применяется к текущему вошедшему в систему пользователю.

Как я могу применить настройку к HKEY_USERS\*\MyKey? Предпочтительно использовать партию? В качестве альтернативы, как я могу запустить запланированную задачу, когда пользователь в настоящий момент вошел в систему Windows пользователь?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Я решил это с помощью следующего кода. (конечно, заменив MyKey)

Это будет применяться только к зарегистрированным пользователям в реестре. Поскольку я запускаю этот код при запуске приложения, прежде чем оно прочитает реестр, это хорошо работает для моего случая.

SETLOCAL ENABLEDELAYEDEXPANSION
for /f %%A in ('reg query HKEY_USERS') do (
    set hive=%%A
    if "!hive:~11,8!"=="S-1-5-21" (
        if not "!hive:~-7!"=="Classes" (
            REG ADD !hive!\MyKey /ve /t REG_DWORD /d 1 /f
        )
    )
)
endlocal

Если вы хотите применить ко всем пользователям, вошли они в систему или нет, это должно сделать свершившийся sh тот.

SETLOCAL ENABLEDELAYEDEXPANSION
for /f %%A in ('reg query HKEY_USERS') do (
    set hive=%%A
    if not "!hive:~-7!"=="Classes" (
        REG ADD !hive!\MyKey /ve /t REG_DWORD /d 1 /f
    )
)
endlocal
0 голосов
/ 13 марта 2020

Это сначала разрешает SID через WMI, затем вводит SID в команду reg. Попробуйте ..

for /f "delims=" %a in ('wmic useraccount where "name='%username%'" get sid') do for /f "delims=" %b in ("%a") do REG ADD HKEY_CURRENT_USER\%b /ve /t REG_DWORD /d 1 /f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...