Перенос профиля пользователя Windows Vista, 7, 8 в другой или переустановленный Windows

Отправлено 30 июн. 2013 г., 0:09 пользователем Anton Derbenev   [ обновлено 30 июн. 2013 г., 3:00 ]
Откройте командную строку от имени администратора, следующие команды надо писать в ней.
  1. Если профиль надо перенести в другой путь, для его копирования стоит использовать LinkShellExtension (ранее HardLinkShellExtension), чтобы сохранить внутренние Symlink'и и Reparse Point'ы.
  2. Исправление прав доступа.
    1. regedit. Подключите старую ветку реестра пользователя (NTUSER.DAT в корне профиля) и укажите в переменной UserRegHive путь в реестре к ней.
      Пример:
      SET UserRegHive=HKEY_USERS\profileofLogicDaemon
    2. Аналогично с AppData\Local\Microsoft\Windows\UsrClass.dat (путь относительно корня профиля), переменная UserClassRegHive.
      Пример:
      SET UserClassRegHive=HKEY_USERS\profileofLogicDaemon_classes
    3. После подключения запишите старый SID в переменную OldSID.
      Чтобы узнать свой старый SID, откройте безопасность любой ветки Вашего профиля, там будет SID, не переводимый в имя пользователя.
      Пример:
      SET OldSID=S-1-5-21-223211311-693905041-1994570983-1001
    4. Новый пользователь уже должен быть создан, в переменную NewUserName запишите его имя.
      Пример:
      SET NewUserName=LogicDaemon
    5. Следующие команды надо выполнить в командной строке как есть. В них используются переменные, определённые Вами ранее.
      Вам понадобится SetACL (http://helgeklein.com/setacl/). Он умеет заменять принципала (пользователя), не трогая сами параметры безопасности.
      setacl -on %UserRegHive% -ot reg -actn trustee -trst "n1:%OldSID%;n2:%NewUserName%;s1:y;ta:repltrst;w:dacl,sacl" -rec yes

      setacl -on D:\Users -ot file -actn trustee -trst "n1:%oldSID%;n2:%NewUserName%;s1:y;ta:repltrst" -rec yes

      Посмотреть оставшиеся ветки с неисправленным доступом (в которых остались SID, не преобразованные в имена) можно так:
      setacl -on HKEY_USERS\profileofLogicDaemon -ot reg -actn list -rec yes -lst "i:n" | grep S-1-5-
  3. Загрузка старого профиля в новую/другую Windows
    Во-первых, стоит выгрузить ветки реестра, которые были загружены для исправления SID'а.
    Далее,
    • Я обычно делаю так:
      1. Создаю новый пустой профиль (создаю пользователя, захожу под ним, выхожу)
      2. Удаляю папку с новым (пустым) профилем
      3. Переименовываю папку старого профиля в такое же название, которое было дано новому.
    • Можно по-другому:
      1. Создать новый пустой профиль
      2. Исправить ссылку на к профиль в реестре (ветка HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList, подветка соответствует SID пользователя)
  4. После входа в систему с новым профилем, если у него изменился путь, надо исправить ссылки в реестре. Работает поиск и замена.

Comments