PDA

Показать полную графическую версию : [решено] Помогите создать батник для переноса Профиля пользователя.


katarsis
20-01-2010, 17:25
Доброго времени суток!
Хотелось бы узнать возможноли создать батник чтоб он переносил профиль из Documents And Setings на другой диск, если да то как?

Vadikan
21-01-2010, 01:57
katarsis, а как бы вы вручную делали? :) Это надо делать во время установки с помощью файла ответов (ссылки в подписи). А после установки - не рекомендуется во избежание проблем...

skyfish
21-01-2010, 03:03
Написать можно, но там много будет возни с регистром. Лучше перенесите с помощью готовой утилиты (http://www.funduc.com/app_mover.htm).
Предварительно сделайте бекап диска || регистра.

amel27
21-01-2010, 11:26
переносил профиль из Documents And Setings на другой диск »
противоречивая постановка вопроса: перенос ВСЕХ профилей ("C:\Documents And Setings", т.е. о чем сказал Vadikan, ) на другой диск или одного пользователя "из Documents And Setings"? Последнее называется перемещаемым профилем: Как создать и скопировать перемещаемый профиль пользователя в Windows (http://support.microsoft.com/kb/314478/ru)

semiono
21-01-2010, 20:00
По своему опыту знаю, сначала должны быть (существовать) папки, и только после этого правка реестра!
Если это не учитывать возможен "откат"!
Ну а переносить не сложно...
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-73586283-1482476501-682003330-500]
ProfileImagePath=...
Думаю ID будет другим у каждого юзера, но зато этого достаточно.

Остальное тоже здесь рядом если надо ~
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList]
ProfilesDirectory= (это у вас Documents And Setings)
AllUsersProfile= это тоже понятно.

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

Я многократно менял все профили и Common Files, проблем не было!
Для PF/CF подойдёт find and replace, например, jv16 power tools очень корректно делает,
в пути не забудте слеш использовать \Program Files, чтоб не заменить то, что к пути не имеет отношения. :)

Ещё есть [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
но это не столь серьёзный раздел, хотя и должен быть корректно записан, чтоб "проводник" не падал :)

katarsis
21-01-2010, 22:50
katarsis, а как бы вы вручную делали? Это надо делать во время установки с помощью файла ответов (ссылки в подписи). А после установки - не рекомендуется во избежание проблем... »

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

делаю очень просто захожу в безопасный режим под админом правой кнопкой на Мой компьютер - Свойства - Дополнительно - Профили пользователей Параметры - Выбираю Пользователя , жму копировать выбираю дирикторию... потом правлю реестра как описано выше...
Я так постояно делаю.Но хотелось бы batник...
Может кто нибуть подскажит, хотя бы где найти инфу, может кто нибуть замарачивался так?

Vadikan
22-01-2010, 02:23
делаю очень просто захожу в безопасный режим под админом правой кнопкой на Мой компьютер - Свойства - Дополнительно - Профили пользователей Параметры - Выбираю Пользователя , жму копировать »
ОС указывать надо сразу тогда...
потом правлю реестра как описано выше... »
Вот это и не поддерживается, например.

Я смотрю так на проблему: если нужен батник, значит, процедура выполняется регулярно. Тогда нужно просто сразу делать правильно - при установке. Впрочем, не буду мешать поискам батника.

amel27
25-01-2010, 06:00
делаю очень просто захожу в безопасный режим под админом правой кнопкой на Мой компьютер - Свойства - Дополнительно - Профили пользователей Параметры - Выбираю Пользователя , жму копировать выбираю дирикторию... потом правлю реестра как описано выше...
Я так постояно делаю.Но хотелось бы batник... »

копирование профиля (пользователь должен быть разлогинен):
CopyProfile command-line tool to copy a Windows user profile on a Windows XP-based or a Windows Server 2003-based computer (http://www.microsoft.com/downloads/details.aspx?FamilyID=ed182a96-f3a6-4fdd-862b-1ae03dc130c1&displaylang=en)

реестр править можно через тот же REG.EXE

volk1234
14-04-2010, 02:41
Привет всем.
Я тут заканчиваю писать статью по использованию 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

amel27
14-04-2010, 05:07
volk1234, а разве достаточно просто сменить права на реестр?... там ведь могут быть параметры с явным указанием имени/SID пользователя... например, можно вывести через RegFind (http://www.activexperts.com/activmonitor/windowsmanagement/reskit2000/0166/):
RegFind -y -p HKEY_CURRENT_USER %USERNAME%

кстати, можно прочитать "profiles" и без реестра: http://forum.oszone.net/post-374160-12.html

volk1234
14-04-2010, 10:49
там ведь могут быть параметры с явным указанием имени/SID пользователя »

Хм. Да есть такое - только SID имеется и тот и то в одном месте, а имя старого пользователя во многих настройках программ - как история открытых файлов и т.д.
В любом случае профиль будет работать корректно - за исключением специальных программ. Это момент я обязательно укажу в статье. В любом случае дополнительные утилиты привлекать неохота - пропадает смысл примера.
Если есть предложения как заменить из командной стороки такие строки- рад буду выслушать. Правда возможны глюки в виде замены совпадающих имен пользователя и имени логина в программы - например Administrator для входа в Win изменится, а для входа в БД такое же имя менять нельзя .

amel27
14-04-2010, 11:54
дополнительные утилиты привлекать неохота »а как же SubInACL ?.. кстати, для NTFS прав она не очень подходит, так как не поддерживает наследование - назначает права индивидуально на каждый объект (файл/папку), мне больше нравится Xcacls.VBS (http://www.microsoft.com/downloads/details.aspx?FamilyID=0ad33a24-0616-473c-b103-c35bc2820bda&DisplayLang=en)... а если выставить наследование, то и ключ /K в XCOPY не нужен

Если есть предложения как заменить из командной стороки такие строки- рад буду выслушать. »ключ -r в RegFind

volk1234
17-04-2010, 23:17
а как же SubInACL ?.. »

Я в том смысле что у меня статья про subinacl - это основная утилита, а любые другие - дополнительные.

По поводу наследования - абсолютно справедливо, но утилиты вроде icacls xcacls не работают с реестром.

Вобщем сегодня помучил USMT, Мастер переноса файлов и параметров (который, кстати, тоже использует xcopy) и сделал такой скрипт:
@Echo off

Set OLD_USER=%1
Set NEW_USER=%2
Set USER_DISK=%3

Rem Извлекаем из реестра полный путь к папке, содержащей профили пользователей
SET profiles=%AllUsersProfile%
SET profiles=%profiles:~0,-10%
Echo %profiles%

xcopy "%profiles%\%OLD_USER%\*.*" "%profiles%\%NEW_USER%" /E /Q /H /R /K /Y

subinacl /noverbose /subdirec "%profiles%\%NEW_USER%" /setowner="%NEW_USER%"
subinacl /noverbose /subdirec "%profiles%\%NEW_USER%\*" /setowner="%NEW_USER%"

Reg Load HKEY_USERS\Temph "%profiles%"\%NEW_USER%\NTUSER.DAT
subinacl /noverbose /subkeyreg HKEY_USERS\Temph /replace=%OLD_USER%=%NEW_USER%
subinacl /noverbose /subkeyreg HKEY_USERS\Temph\* /replace=%OLD_USER%=%NEW_USER%
Reg Unload HKEY_USERS\Temph

If "%USER_DISK%"=="" Goto :EOF

subinacl /noverbose /subdirec "%USER_DISK%" /replace="%OLD_USER%"="%NEW_USER%"
subinacl /noverbose /subdirec "%USER_DISK%"\*.* /replace="%OLD_USER%"="%NEW_USER%"
subinacl /noverbose /subdirec "%USER_DISK%"\*.* /setowner="%NEW_USER%"
subinacl /noverbose /subdirec "%USER_DISK%" /setowner="%NEW_USER%"
Pause

Exit

Перенеслось все - ярлычки на своих местах, программы открываются. Ничуть не хуже других средств переноса. Например Autocad все равно ни одно средство под ХР корректно не перенесет. У меня просто еще раз запустилась настройка Autocad профиля и все заработало.

Засада кроется в другом - например при установке пользователя обозвали Slava. Соответственно на папку Slava ссылается ProfileList. Если переименовать пользователя в Lena - имя папки с профилем не изменяется ! Соответственно моя переменная OLD_USER работает не правильно - ибо папку копировать надо Slava - откуда это моему скрипту знать, а разрешения менять у Lena....

amel27
18-04-2010, 14:23
откуда это моему скрипту знать »

как вариант - восстановить SID пользователей - через WMI или другие CMD-утилиты (тут уже вопрос поднимался неоднократно), после чего соответствие между пользователем и профилем однозначно устанавливается через "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"




© OSzone.net 2001-2012