We rise up for the things we believe in over and over again
Итак, grand finale. Образ готов, осталось самое интересное - все же заставить пользовательские папки жить не на системном разделе. Как мы уже знаем, использовать файл ответов для этих целей нельзя. В сети гуляет второй метод - обман ОС при помощи файловой системы и симлинков, которые предоставляет файловая система. Идея проста - нужно загрузиться с любого LiveCD, умеющего работать с NTFS (самый простой вариант - с установочного диска Windows 7), перетащить каталог Users на нужный раздел, а на месте этого каталога на диске C: разместить симлинк, ведущий на истинное расположение папки профилей. Подводный камень в том, что встроенные средства Win 7 не умеют работать с junctions, которых в каждом профиле штук 15. А перенести их хотелось бы. Что ж, для этого подойдет программка fastcopy, синтаксис будет примерно таким (предполагая, что папки должны будут лежать на диске D
:
fastcopy /acl %systemdrive%\Users /to=D:
Это скопирует полностью каталог Users на диск D: с сохранением всех junctions и прав на каталог. Затем делаем сам симлинк:
mklink c:\Users d:\Users /J
Сказано - сделано. Каталог скопирован, симлинк - тоже, время запускать sysprep. После которого мы получаем... неработоспособную ОС, не способную пройти даже minisetup. Что за...?
Shift+F10 на экране с ошибкой, и смотрим, что у нас происходит. А происходит у нас следующее:
Проще говоря, sysprep взял наш созданный симлинк, ведущий на диск D:, и завернул его на самого себя! Тем самым порушив нашу установку.
В общем и целом, Windows очень активно сопротивляется любым попыткам переноса каталога Users. Стало быть, придется оставить его на месте, и работать с отдельными папками.
Теория. Все создаваемые учетные записи наследуют свои настройки от стандартного пользователя Default. В том числе и пути к папкам с контентом. Стало быть, как-то надо эти настройки изменить.
Если делать это из графического интерфейса руками, то выглядит это так: открываем regedit, в нем переходим на какой-нибудь куст, куда у нас есть права записи, и в него монтируем реестр из профиля Default, он лежит вот в этом файле:
%systemdrive%\Users\Default\ntuser.dat
После этого можем приступать к редактированию.
Нужные нам настройки хранятся по следующему пути (в моем случае профиль Default был примонтирован в ветку HKLM под именем DefaultProfile): HKLM\DefaultProfile\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
Практика. Поменять пути к тем папкам, которые требуется перенести, после чего записать изменения в этот файл реестра просто отмонтировав его соответствующей командой.
Если это оформить в виде скрипта (мы, администраторы, ведь очень ленивые люди, да?), то получится нечто вроде следующего:
Что ж, все это замечательно. Однако, после выполнения sysprep все это добро будет сброшено на дефолтные значения. Стало быть, выполнять эту операцию придется уже после выполнения sysprep. В этом нам поможет тот самый автологин, который мы настраивали ранее. Коли у нас после развертывания запускается скрипт настройки ПК, то почему бы не включить в него и вышеуказанные инструкции по смене каталогов.
Сказано - сделано. Добавили, оттестировали, все отлично. Каталоги перенаправляются, библиотеки работают как надо, одна только проблема - в профиле остаются уже пустые каталоги документов, загрузок, музыки... Они уже не нужны, значит надо от них избавиться, чтобы лишний раз не вызывали недоумение. Это уже довольно просто:
Вышеуказанное можно оформить в виде *.cmd файла, разместив его в папке профиля пользователя Default. При этом он будет скопирован в каждый профиль каждого созданного пользователя. Осталось только обеспечить автоматический запуск этого сценария. Как сделать? Воспользуемся технологией RunOnce применительно к учетным записям. Для этого в тот код, который меняет пути к пользовательским каталогам, добавить инструкцию запуска кода очистки лишних папок (в данном примере скрипт очистки называется CleanUp.cmd и расположен в папке профиля Defaut):
На этом вроде все.

fastcopy /acl %systemdrive%\Users /to=D:
Это скопирует полностью каталог Users на диск D: с сохранением всех junctions и прав на каталог. Затем делаем сам симлинк:
mklink c:\Users d:\Users /J
Сказано - сделано. Каталог скопирован, симлинк - тоже, время запускать sysprep. После которого мы получаем... неработоспособную ОС, не способную пройти даже minisetup. Что за...?
Shift+F10 на экране с ошибкой, и смотрим, что у нас происходит. А происходит у нас следующее:
Проще говоря, sysprep взял наш созданный симлинк, ведущий на диск D:, и завернул его на самого себя! Тем самым порушив нашу установку.
В общем и целом, Windows очень активно сопротивляется любым попыткам переноса каталога Users. Стало быть, придется оставить его на месте, и работать с отдельными папками.
Теория. Все создаваемые учетные записи наследуют свои настройки от стандартного пользователя Default. В том числе и пути к папкам с контентом. Стало быть, как-то надо эти настройки изменить.
Если делать это из графического интерфейса руками, то выглядит это так: открываем regedit, в нем переходим на какой-нибудь куст, куда у нас есть права записи, и в него монтируем реестр из профиля Default, он лежит вот в этом файле:
%systemdrive%\Users\Default\ntuser.dat
После этого можем приступать к редактированию.
Нужные нам настройки хранятся по следующему пути (в моем случае профиль Default был примонтирован в ветку HKLM под именем DefaultProfile): HKLM\DefaultProfile\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
Практика. Поменять пути к тем папкам, которые требуется перенести, после чего записать изменения в этот файл реестра просто отмонтировав его соответствующей командой.
Если это оформить в виде скрипта (мы, администраторы, ведь очень ленивые люди, да?), то получится нечто вроде следующего:
Что ж, все это замечательно. Однако, после выполнения sysprep все это добро будет сброшено на дефолтные значения. Стало быть, выполнять эту операцию придется уже после выполнения sysprep. В этом нам поможет тот самый автологин, который мы настраивали ранее. Коли у нас после развертывания запускается скрипт настройки ПК, то почему бы не включить в него и вышеуказанные инструкции по смене каталогов.
Сказано - сделано. Добавили, оттестировали, все отлично. Каталоги перенаправляются, библиотеки работают как надо, одна только проблема - в профиле остаются уже пустые каталоги документов, загрузок, музыки... Они уже не нужны, значит надо от них избавиться, чтобы лишний раз не вызывали недоумение. Это уже довольно просто:
Вышеуказанное можно оформить в виде *.cmd файла, разместив его в папке профиля пользователя Default. При этом он будет скопирован в каждый профиль каждого созданного пользователя. Осталось только обеспечить автоматический запуск этого сценария. Как сделать? Воспользуемся технологией RunOnce применительно к учетным записям. Для этого в тот код, который меняет пути к пользовательским каталогам, добавить инструкцию запуска кода очистки лишних папок (в данном примере скрипт очистки называется CleanUp.cmd и расположен в папке профиля Defaut):
На этом вроде все.