Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Применение настроек ветки реестра HKCU для всех новых пользователей (http://forum.oszone.net/showthread.php?t=327993)

zegordo 30-06-2017 12:27 2748273

Применение настроек ветки реестра HKCU для всех новых пользователей
 
Добрый день, возьмём windows 10 и парочку правок реестра для текущего пользователя в powershell, например
Код:

#добавление значка моего компьютера на рабочий стол
Reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel" /v "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" /t REG_DWORD /d "0" /f
Reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu" /v "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" /t REG_DWORD /d "0" /f

Как видно, он правит HKCU, а значит, для каждого нового пользователя придётся этот скрипт прописывать заного.

Как сделать так, чтобы можно было прописывать подобное 1 раз и эти правки автоматически бы применялись для любого свежесозданного пользователя на этом компьютере?

Nand 03-07-2017 08:48 2748680

Править реестр для дефолтного юзера.

zegordo 03-07-2017 10:38 2748698

А можно точнее, какие ключи, взяв в пример из первого поста?

x0r 03-07-2017 11:49 2748722

Тоже самое, тока замени на HKLM\
Если пральна помню, то там такой механизм:
- если есть ключи в HKLM - они применяются для всех.
- если есть в HKLM и в HKCU одинаковые данные - применяется то что записано в HKCU (настройки юзера имеют приоритет при наличии)

Iska 03-07-2017 12:06 2748725

zegordo, Вам нужно определить местоположение каталога куста реестра для шаблонного пользователя в параметре Default раздела HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\ProfileList. Затем найти по этому пути файл куста реестра NTUSER.DAT. Загрузить этот куст из файла в реестр, обычно в раздел HKEY_USERS, дав имя подгруженному разделу. Затем импортировать в этот раздел Ваш файл реестра, либо создать разделы/задать в нём значения искомых параметров. Затем выгрузить ранее загруженный куст из реестра. Примерно так, как это описано в: Применение твиков реестра ко всем учетным записям после установки ОС, только там — ручками, а Вам нужно будет это делать программно.

Не вздумайте что-нибудь импортировать в раздел HKEY_USERS\.DEFAULT — это отнюдь не шаблонная учётная запись (как может показаться из именования в реестре), а системная — Local System, и профиль её расположен совсем в другом месте, типично — в C:\Windows\system32\config\systemprofile.

Цитата:

Цитата x0r
Тоже самое, тока замени на HKLM\ »

x0r, данный совет — не из той оперы.

zegordo 03-07-2017 12:58 2748746

Iska, я так понимаю, загружать куст можно только неактивного пользователя?
Кроме того, не совсем понял что нужно сделать с итоговым кустом реестра после выгрузки, чтобы он применялся ко всем пользователям, создаваемым впоследствии?

x0r 03-07-2017 13:15 2748755

и чего вдруг? хочешь сказать что не применится настройка? надо проверить.

еще можно запихнуть этот твой батнег в автозапуск, тудаже в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
и он будет вносить данные для каждого юзера компа.

Iska 03-07-2017 13:30 2748760

Цитата:

Цитата zegordo
Iska, я так понимаю, загружать куст можно только неактивного пользователя? »

А Вы собираетесь загружать куст активного пользователя? Зачем?

Цитата:

Цитата zegordo
Кроме того, не совсем понял что нужно сделать с итоговым кустом реестра после выгрузки, чтобы он применялся ко всем пользователям, создаваемым впоследствии? »

Ничего не нужно делать. При первом входе на машину нового пользователя ему копируется профиль того самого шаблонного пользователя.

zegordo 03-07-2017 13:42 2748763

Цитата:

Цитата Iska
ему копируется профиль того самого шаблонного пользователя »

C:\Users\Default - по этому мути поменять через загрузку куст реестра и будет для всех новосозданных применяться?

Iska 03-07-2017 13:48 2748766

Цитата:

Цитата zegordo
C:\Users\Default - по этому мути »

Не «по этому», а:
Цитата:

Цитата Iska
Вам нужно определить местоположение каталога куста реестра для шаблонного пользователя в параметре Default раздела HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\ProfileList. Затем найти по этому пути файл куста реестра NTUSER.DAT. »

В предыдущих ОС путь был другой. В какой-нибудь новой версии ОС или с очередным обновлением Windows 10 путь внезапно™ может поменяться. Посему — опрашиваете указанный раздел и параметр реестра, берёте оттуда REG_EXPAND_SZ и только потом используете.

Цитата:

Цитата zegordo
поменять через загрузку куст реестра и будет для всех новосозданных применяться? »

Да. Причём не только для новосозданных, но и для уже созданных, но ещё ни разу не регистрировавшихся на машине пользователей. Применяться (точнее — целиком копировать профиль, включая пользовательские части реестра) будет в момент их первого входа.

zegordo 03-07-2017 15:58 2748808

Iska,, если я правильно понял, то чтобы настройки применялись ко всем в будущем созданным пользователям, нужно брать путь строго из этого ключа?(т.е. прописать в скрипте захват пути именно из него)
Скрытый текст

В целом получается так:
скрипт берёт путь, загружает из него куст реестра, правит этот куст и загружает обратно, верно?
Если всё верно, то второй вопрос.
Пользователь создаётся с настройками, которые не всегда можно править через реестр. например панель быстрого доступа
Скрытый текст

а так же, ярлыки рабочего стола и панели задач(возле пуска)
Возможно ли это сделать через загрузку куста реестра, или эти настройки уже не хранятся в реестре?

Iska 03-07-2017 16:13 2748813

Цитата:

Цитата zegordo
нужно брать путь строго из этого ключа?(т.е. прописать в скрипте захват пути именно из него) »

Да.

Цитата:

Цитата zegordo
скрипт берёт путь, загружает из него куст реестра, правит этот куст и загружает обратно, верно? »

Верно. Только в конце не загружает обратно, а выгружает. При этом, под каким именем Вы загрузили куст — то имя и используете в пути:
Цитата:

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

После внесения изменений щелкните левой кнопкой мыши загруженный раздел (Custom) и выберите из меню Файл команду Выгрузить куст
т.е., вместо HKCU\… — HKU\Присвоенное имя\….

Цитата:

Цитата zegordo
Пользователь создаётся с настройками, которые не всегда можно править через реестр. например панель быстрого доступа… »

У меня нет Windows 10. Ничего не могу сказать.

zegordo 17-08-2017 10:55 2758904

Получился такой код:

Код:

#взятие в переменную пути файла куста реестра для дефолтного юзера
$DefaultProfilePath = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' -Name Default).Default+="\NTuser.dat"
#загрузить куст реестра по этому пути
reg load "hku\DDefault" "$DefaultProfilePath"
#ну и сами правки:
#отмена установки вандрайва для новых пользователей
reg delete "HKEY_USERS\DDefault\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f
#снятие галок недавно использующихся файлов и папок на панели быстрого доступа
Reg.exe add "HKEY_USERS\DDefault\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v "ShowRecent" /t REG_DWORD /d "0" /f
Reg.exe add "HKEY_USERS\DDefault\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v "ShowFrequent" /t REG_DWORD /d "0" /f
#остальные правки...
#выгрузка куста реестра
reg unload "hku\DDefault"

как видно обе команды "reg" и "reg.exe" равнозначны, однако это не совсем нативно для павершела, т.к. там используются другие командлеты:
Get/New/Set-Item[Property]
и если использовать их на этот загруженный куст, будут следующие ошибки:
New-ItemProperty

Set-ItemProperty

New-Item во всех случаях выполняется без ошибок


Где может быть ошибка?

Busla 17-08-2017 12:35 2758933

Тут целый вагон ошибок и неверных предположений.
В общем и целом: используйте reg.exe.

zegordo 17-08-2017 16:19 2758981

Цитата:

Цитата Busla
Тут целый вагон ошибок и неверных предположений. »

но для редактирования любых других ключей реестра, кроме загруженного куста они работают.

Kazun 17-08-2017 16:23 2758983

Доступ к HKEY_USERS через провайдера Registry:
Код:

Get-ChildItem Registry::HKEY_USERS\.Default

mwz 18-08-2017 00:09 2759087

Цитата:

Цитата Kazun
Get-ChildItem Registry::HKEY_USERS\.Default »

zegordo
Не заметил, прозвучало здесь это или нет — но на всякий случай сделаю акцент:

Установки
Цитата:

Цитата zegordo
для каждого нового пользователя »

берутся как раз из ключа HKEY_USERS\.Default ("пользователь по умолчанию").

Busla 18-08-2017 09:35 2759136

mwz, лучше бы заметили, а ещё лучше - знали бы, что советуете:
Цитата:

Цитата Iska
Не вздумайте что-нибудь импортировать в раздел HKEY_USERS\.DEFAULT — это отнюдь не шаблонная учётная запись (как может показаться из именования в реестре), а системная — Local System »


mwz 18-08-2017 11:09 2759192

Busla, упустил... В семёрке, насколько помню, она как раз и была умолчальной.

Iska 18-08-2017 11:20 2759195

mwz, насколько я помню, принцип не менялся с первых NT. И в последних ОС, надо полагать, то же самое.

Казбек 18-08-2017 11:29 2759200

Можно взглянуть в сторону Group Policy Management Console, если не принципиально осуществлять задуманное именно посредством PS.
  1. Install Group Policy Management Console in Windows 10/8/7
  2. А потом используем GPMC для распространение необходимых нам параметров Group Policy Preferences – 1. Deploying Registry Settings

Цитата:

Цитата mwz
В семёрке, насколько помню, она как раз и была умолчальной. »

Нет. The .Default user is not the default user

zegordo 25-08-2017 17:10 2760704

Цитата:

Цитата Kazun
Доступ к HKEY_USERS через провайдера Registry:
Код:
Get-ChildItem Registry::HKEY_USERS\.Default »

нифига не понял при чём тут эта команда и каким образом она должна работать для создания ключей
однако
проблему решил

итоговый код:

Код:

#загрузка в переменную пути default куста реестра
$DefaultProfilePath = (Get-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList' -Name Default).Default+="\NTuser.dat"
#загрузка куста реестра
reg load "hku\DDefault" "$DefaultProfilePath"

#подготовка для редактирования куста реестра через павершел. почитать можно тут https://www.myotherpcisacloud.com/po...ith-Powershell
Set-Location Registry::\HKEY_USERS
New-PSDrive HKU Registry HKEY_USERS
Set-Location HKU:

#отключить центр уведомлений(как пример)
New-Item -Path "HKEY_USERS\DDefault\Software\Policies\Microsoft\Windows\Explorer"  -Force
New-ItemProperty -Path "HKEY_USERS\DDefault\Software\Policies\Microsoft\Windows\Explorer" -Name "DisableNotificationCenter" -Type DWord -Value 1 -Force

#важно: если нету ключа реестра, нужно писать New-Item. если ключ есть, нужно только добавить значение в него - хватит и New-ItemProperty . Так же, обязательно писать -force, чтобы перезаписывало уже имеющееся значение.
#вообще имхо, new-itemproperty с форсом лучше, чем set-itemproperty без него.

#помогает закрыть пути реестра(иначе не даст выгрузить куст). почитать можно тут: https://stackoverflow.com/questions/...ad-and-new-key
[gc]::Collect()
#пауза, чтобы дать время сборщику мусора
start-sleep 5

#выгрузка куста реестра
reg unload "hku\DDefault"



Время: 22:47.

Время: 22:47.
© OSzone.net 2001-