Я пытаюсь предварительно заполнить домашний каталог пользователя, прежде чем он войдет в систему в первый раз. Хотелось бы сделать это программно. Прямо сейчас я могу создать папку, но когда пользователь входит в систему, он создает другую с добавленным доменом в конце. Вот что до сих пор.
@echo off
IF EXIST C:\USERS\%1 GOTO COMPLETE
GOTO FIRSTLOGON
:FIRSTLOGON
:: Create user folder on C:\
mkdir "C:\USERS\%1"
:: copy folder structure from template to new user folder
mkdir "c:\Users\%1\Desktop"
mkdir "c:\Users\%1\Documents"
mkdir "c:\Users\%1\Downloads"
mkdir "c:\Users\%1\Music"
mkdir "c:\Users\%1\Pictures"
:: Set rights on new folder
::: Remove inheritance, grant owner everything and admin everything
icacls "C:\USERS\%1" /inheritance:r /grant DOMAIN\%1:(OI)(CI)F
icacls "C:\USERS\%1" /grant %computername%\Administrator:(OI)(CI)F
GOTO END
:COMPLETE
echo Folder creation complete
:END
Однако папка не будет домашним каталогом пользователя. Я предполагаю, что мне нужно будет добавить раздел реестра с GUID пользователя в HKLM> SOFTWARE> Microsoft> Windows NT> CurrentVersion> ProfileList, но не знаю, как получить GUID из имени пользователя, и если мне нужно сделать что-нибудь еще.
Примечание: я не хочу менять домашний каталог пользователя для каждого компьютера, только тот, на котором они входят.
Для решения проблемы я добавил раздел реестра в HKLM> ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ> Microsoft> Windows> Текущая версия> Выполнить, который запускал сценарий в другом месте. Основная цель скриптов - создать папку в домашнем каталоге пользователя и переместить файл. Если папка уже существовала, я просто вышел из скрипта.
Изначально у меня он был в RunOnce, однако он будет запускаться только для первого пользователя, вошедшего в систему, и не будет работать, если другой пользователь вошел в систему в первый раз.