Как извлечь SID из профиля пользователя Windows из реестра в текстовый файл? - PullRequest
0 голосов
/ 22 марта 2019

У меня появляется задача, когда мне нужно вручную ввести значение ключа HKEY_USER и строковое значение для каждого профиля Windows на всех компьютерах. Это может занять некоторое время. Я привык автоматизировать их все или, по крайней мере, некоторые процессы.

У меня работает процесс добавления ключа (из списка sids.txt):

@echo off
pushd %~dp0
for /f "usebackq tokens=*" %%A in ("SIDS.txt") do (
    REG ADD "%%A\create\key\here" /f
    REG ADD "%%A\create\key\here" /t REG_SZ /d "add string value here" /f
)
pause

Чтобы еще больше ускорить процесс, я надеялся получить некоторую помощь в получении SID для каждого профиля пользователя здесь:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Для каждого указанного SID, например ::

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-2686047782-4092528985-2296408390-1413

Внутри ключей есть значение profile-image-path, которое содержит имя профиля пользователя Windows.

То, что я хотел бы сделать, это закачать имя профиля Windows и sid в текстовый файл, отформатированный следующим образом, затем я могу довольно быстро редактировать, удалять записи профиля пользователя, отличные от Windows (например, учетные записи по умолчанию или системные учетные записи). ) и запустите мой рабочий код выше списков - отредактированный, чтобы иметь только список SIDS, как в рабочем коде выше.

S-1-5-21-2686047782-4092528985-2296408390-1413  mickey.mouse 
S-1-5-21-2686047782-4092528985-2296408390-1411  Donald.duck

1 Ответ

1 голос
/ 22 марта 2019

Самый простой способ - это сделать с wmic useraccount запросом:

wmic useraccount get name,sid | findstr /vi "SID">somefile.txt
type somefile.txt

Это перечислит каждую учетную запись и перенаправит вывод в файл с именем somefile.txt, и будет просто type файл, чтобы показать вам содержимое файла.

Другой способ - проверить, существует ли каталог userprofile. который должен устранить системные учетные записи.

@for /f "delims=" %i in ('wmic useraccount get name^,sid ^| findstr /vi "SID"') do @for /F %a in ("%i") do if exist "C:\users\%a" @echo(%i>>somefile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...