![]() |
Запись в реестр пользователя от администратора
Добрый день. Решил написать небольшой батник, но столкнулся в проблемой.
Пользователь состоит в группе Пользователи. Запукает батник от имени Администратора. Такого содержания "REG ADD HKEY_CURRENT_USER\Control Panel..." естественно значение записывается в ветку Администратора, а не Пользователя. Как реализовать через батник запись в нужный раздел именно пользователя? Вариант с HKLM не подойдет. Есть способ работы через SID по пути "HCU\S-1-5-21-353...\Control Panel...", но опять же откуда батнику знать какой идентификатор у пользователя, если только заранее вручную не задать значение через переменную, а если машин много, то под каждого писать замучаюсь. Может как-то можно забить индентификатор в переменную автоматически ? Очень надо, выручайте. |
Цитата:
Код:
@echo off Код:
@echo off Код:
$user = [System.Security.Principal.NTAccount]::New("ТУТ ИМЯ ПОЛЬЗОВАТЕЛЯ") |
Спасибо за ответ! Первый вариант выдаёт SID администратора, второй через wmic интересный, но надо указывать имя пользователя %username% тут не пройдет, опять же из-за того что будет выводить "Администратор"
|
Ins1der, а зачем нужен запуск от имени администратора, если Вы планируете осуществлять запись в раздел пользователя?
|
Цитата:
|
Дело в том, что помимо HKCU, так же присутствуют ключи HKLM, которые без прав администратора не работают
|
Ins1der, так простой пользователь и не должен иметь возможности для записи в HKLM. Что-то не то с Вашим выбором алгоритма.
|
Странная какая-то проблема... Если есть какие-то параметры реестра которые должны задаваться от администратора И обычного пользователя, то проще нарисовать два батника (или скрипта на поше). Еще проще - задавать эти параметры через GPO. Как ядрёна смесь первого и второго варианта - два батника/скрипта, которые через созданные посредством GPO таски в шедулере стартуют каждый от своего пользователя (в этом случае рекомендую пользовать вместо учетки с правами админа - system).
Есть еще извращенные варианты с одним батником/скриптом - либо давать (а потом возвращать в то состояние в которое и было) права на нужную ветку в HKLM !(не рекомендуется аж вообще, одна кривая буковка и права потом замаешься восстанавливать)!, либо находить SID нужного пользователя и цепляться по нему в HKU (что было в одном из первых постов, но, как я понимаю, ломает вводить имя пользователя), альтернативой поиску конкретного пользователя является добавление/изменение ключа для ВСЕХ пользователей (что тоже не рекомендуется). Наконец можно составить список пользователей и сверять с ним наличествующих на каждой машине, если нашелся тот который нужно - добавить/изменить ключ по его SID (если пользователи доменные - в файле можно даже держать не имена их учеток, а сразу нужные SID). Вроде это все варианты для решения задачи (коллеги, если упускаю какой - поправьте). Определитесь уже с каким помочь (ну или не помогать, часть вопросов, после правильной постановки оных - отваливаются). |
У меня в скрипте так же выполняется работа с icacls и созданием файлов в системных директориях, потому я для себя вижу только вариант предложенный alpap через wmic, но опять же придется прописывать каждого пользователя. Есть ли какой-то способ вывести всех локальных пользователей и загнать их в переменные ?
|
Цитата:
Код:
Get-LocalUser | Where { $_.Enabled } | Select-Object Name, SID |
Цитата:
|
Цитата:
Код:
$users = Get-LocalUser | Where { $_.Enabled } | Select-Object Name, SID |
Цитата:
|
Цитата:
Код:
$users = Get-LocalUser | Where { $_.Enabled } | Select-Object Name, SID |
Время: 01:51. |
Время: 01:51.
© OSzone.net 2001-