Привет всем.
Я тут заканчиваю писать статью по использованию SubinACL и в качестве примера привожу миграцию профиля локального пользователя в домен. Прошу посмотреть гуру, дабы я не позорился неработающим примером. Заодно узнаю как мне получить путь к профилям из реестра целиком
Предполагается, что скрипт будет запускаться от имени администратора домена. Формат запуска
mig2dom.cmd oldusername newusername userfilesdisk
Код:
@Echo off
Set OLD_USER=%1
Set NEW_USER=%2
Set USER_DISK=%3
Rem Извлекаем из реестра полный путь к папке, содержащей профили пользователей - чегото у меня с пробелами неполучается.....
For /F "Skip=1 Tokens=3* " %%i In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /V ProfilesDirectory') Do Set profiles=%%i
Echo %profiles%
Rem Копируем файлы профиля
Xcopy "%profiles%\%OLD_USER%\*.*" "%profiles%\%NEW_USER%" /E /Q /H /R /K /Y
Rem Делаем нового пользователя владельцем
Subinacl /noverbose /subdirec "%profiles%\%NEW_USER%\*" /setowner="%NEW_USER%"
Rem Загружаем куст реестра и изменяем разрешения
Reg Load HKEY_USERS\Temph "%profiles%\%NEW_USER%\NTUSER.DAT"
Subinacl /noverbose /regkey "HKEY_USERS\Temph" /replace=%OLD_USER%=%NEW_USER%
Reg Unload HKEY_USERS\Temph
Rem Дополнительно меняем владельца и разрешения в папке\на диске где хранятся документы пользователя
If %3=="" (
Goto :EOF
) Else (
Subinacl /noverbose /subdirec "%USER_DISK%"\*.* /replace="%OLD_USER%"="%NEW_USER%"
Subinacl /noverbose /subdirec "%USER_DISK%"\*.* /setowner="%NEW_USER%"
)
Pause
Exit