Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Запись в реестр пользователя от администратора

Ответить
Настройки темы
CMD/BAT - Запись в реестр пользователя от администратора

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Решил написать небольшой батник, но столкнулся в проблемой.
Пользователь состоит в группе Пользователи. Запукает батник от имени Администратора.
Такого содержания "REG ADD HKEY_CURRENT_USER\Control Panel..." естественно значение записывается в ветку Администратора, а не Пользователя. Как реализовать через батник запись в нужный раздел именно пользователя? Вариант с HKLM не подойдет.
Есть способ работы через SID по пути "HCU\S-1-5-21-353...\Control Panel...", но опять же откуда батнику знать какой идентификатор у пользователя, если только заранее вручную не задать значение через переменную, а если машин много, то под каждого писать замучаюсь. Может как-то можно забить индентификатор в переменную автоматически ? Очень надо, выручайте.

Отправлено: 11:11, 19-04-2021

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Ins1der:
индентификатор в переменную »
Код: Выделить весь код
@echo off
for /f "tokens=2" %%a in ('WHOAMI /USER /FO LIST^|find /i "SID"') do echo %%a
pause
или
Код: Выделить весь код
@echo off
for /f "delims=" %%a in ('"wmic useraccount where name="ТУТ ИМЯ ПОЛЬЗОВАТЕЛЯ" get SID /value|find "^=""') do set "%%a"
echo %SID%
pause
на PowerShell
Код: Выделить весь код
$user = [System.Security.Principal.NTAccount]::New("ТУТ ИМЯ ПОЛЬЗОВАТЕЛЯ")
$SID  = $user.Translate([System.Security.Principal.SecurityIdentifier])
$SID.Value
и еще есть вот такая удобная утилита: PSGetSid

Последний раз редактировалось alpap, 19-04-2021 в 14:17.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:25, 19-04-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо за ответ! Первый вариант выдаёт SID администратора, второй через wmic интересный, но надо указывать имя пользователя %username% тут не пройдет, опять же из-за того что будет выводить "Администратор"

Отправлено: 15:22, 19-04-2021 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Ins1der, а зачем нужен запуск от имени администратора, если Вы планируете осуществлять запись в раздел пользователя?
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:45, 19-04-2021 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Ins1der:
но надо указывать имя пользователя %username% тут не пройдет »
поверьте, вам это точно не нужно.

Отправлено: 17:13, 19-04-2021 | #5


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Дело в том, что помимо HKCU, так же присутствуют ключи HKLM, которые без прав администратора не работают

Отправлено: 18:15, 19-04-2021 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Ins1der, так простой пользователь и не должен иметь возможности для записи в HKLM. Что-то не то с Вашим выбором алгоритма.

Отправлено: 22:12, 19-04-2021 | #7


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Странная какая-то проблема... Если есть какие-то параметры реестра которые должны задаваться от администратора И обычного пользователя, то проще нарисовать два батника (или скрипта на поше). Еще проще - задавать эти параметры через GPO. Как ядрёна смесь первого и второго варианта - два батника/скрипта, которые через созданные посредством GPO таски в шедулере стартуют каждый от своего пользователя (в этом случае рекомендую пользовать вместо учетки с правами админа - system).
Есть еще извращенные варианты с одним батником/скриптом - либо давать (а потом возвращать в то состояние в которое и было) права на нужную ветку в HKLM !(не рекомендуется аж вообще, одна кривая буковка и права потом замаешься восстанавливать)!, либо находить SID нужного пользователя и цепляться по нему в HKU (что было в одном из первых постов, но, как я понимаю, ломает вводить имя пользователя), альтернативой поиску конкретного пользователя является добавление/изменение ключа для ВСЕХ пользователей (что тоже не рекомендуется). Наконец можно составить список пользователей и сверять с ним наличествующих на каждой машине, если нашелся тот который нужно - добавить/изменить ключ по его SID (если пользователи доменные - в файле можно даже держать не имена их учеток, а сразу нужные SID).

Вроде это все варианты для решения задачи (коллеги, если упускаю какой - поправьте). Определитесь уже с каким помочь (ну или не помогать, часть вопросов, после правильной постановки оных - отваливаются).
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:52, 20-04-2021 | #8


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня в скрипте так же выполняется работа с icacls и созданием файлов в системных директориях, потому я для себя вижу только вариант предложенный alpap через wmic, но опять же придется прописывать каждого пользователя. Есть ли какой-то способ вывести всех локальных пользователей и загнать их в переменные ?

Отправлено: 10:45, 20-04-2021 | #9


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата Ins1der:
Есть ли какой-то способ вывести всех локальных пользователей и загнать их в переменные ? »
Код: Выделить весь код
Get-LocalUser | Where { $_.Enabled } | Select-Object Name, SID
Но тут могут быть "подводные камни" в виде технических аккаунтов, например sshd
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:52, 20-04-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Запись в реестр пользователя от администратора

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Запуск curl.exe от имени пользователя с правами администратора wlad1164 Скриптовые языки администрирования Windows 5 23-11-2018 16:45
Разное - [решено] CMD от имени администратора открывается от пользователя Valek271183 Microsoft Windows 10 7 26-10-2017 18:32
Медиа - [решено] Запись CD/DVD только от имени администратора El Scorpio Microsoft Windows 2000/XP 1 15-10-2014 09:29
Запись в реестр в зависимости от разрядности системы sov44 AutoIt 7 29-04-2014 20:00
Доступ - Как редактировать учетную запись пользователя из-под учетной записи администратора viter_alex Microsoft Windows 2000/XP 7 21-10-2008 20:51




 
Переход