Введение в пользовательские профили Windows - AppData и NTUSER.DAT
· Го Комура · Windows, Профиль пользователя, AppData, FSLogix, Роуминговый профиль, Разработка Windows
Эта статья написана как общий обзор для ИТ-специалистов, администрирующих Windows, ответственных за развёртывание устройств и разработчиков Windows-приложений. Диаграммы носят концептуальный характер. В Markdown-окружениях с поддержкой Mermaid они отображаются как схемы.
Материал опирается на официальную документацию Microsoft, доступную по состоянию на апрель 2026 года. [1][4][7][10][13][14]
В консультациях по Windows слово «профиль» используется очень широко.
- Что вообще находится внутри
C:\Users\имя_пользователя - Как правильно разграничивать
%AppData%и%LocalAppData% - Что такое роуминговый профиль в доменном окружении
- Чем отличаются Mandatory-профиль и Temporary-профиль
- Что выбирать для общих ПК, RDS, VDI и Azure Virtual Desktop
- С чего начинать, если профиль повреждён
Здесь одновременно перемешиваются учётная запись, файловая система, реестр, способ синхронизации и политика эксплуатации, из-за чего разговор быстро сбивается с курса.
В этой статье мы сначала введём взгляд на пользовательский профиль Windows как на единую схему, а затем последовательно разберём разграничение AppData, роуминг, Mandatory, Temporary, FSLogix и подход к устранению неполадок.
1. Сначала вывод
Прежде чем переходить к деталям, сформулируем практические выводы заранее.
- Пользовательский профиль Windows - это не просто папка
C:\Users\имя_пользователя. Это набор из файлов и пользовательского регистрационного куста (NTUSER.DAT). [1] - На обычном локальном ПК по умолчанию создаётся локальный профиль. При первом входе создаётся новый профиль на основе
C:\Users\Default. [11][12] - Место хранения данных приложения не стоит выбирать наугад: базовое правило - настройки, которые нужно переносить с пользователем, идут в
%APPDATA%, а кэш и временное состояние конкретного ПК - в%LOCALAPPDATA%. [2][3] - Роуминговый профиль - это механизм «перенести весь профиль на общий ресурс», а Folder Redirection - механизм «перенести в другое место только известные папки, например Documents». Это не одно и то же. [4][5]
- Mandatory-профиль - это доступный только для чтения профиль, предназначенный для схемы «пользоваться можно, а сохранять нельзя». Temporary-профиль - это аварийный запасной вариант при ошибке, который каждый раз удаляется заново. [7][8][9]
- Роуминговые профили, переходящие через поколения ОС, требуют осторожности: Windows 10 / Server 2016 и новее несовместимы с более ранними версиями, и это стоит учитывать, разделяя версии профилей. [6]
- Для RDS / VDI / Azure Virtual Desktop во многих случаях лучше не полагаться исключительно на классический роуминговый профиль, а рассматривать в качестве первого кандидата контейнеры профилей FSLogix. Microsoft тоже рекомендует FSLogix для Azure Virtual Desktop. [13][14]
- При устранении неполадок разумнее не лезть сразу в
C:\Users, а сначала проверить журнал Application, оперативный / диагностический журнал службы User Profile Service, путь к общему ресурсу и атрибуты и права доступаNTUSER.DAT/USRCLASS.DAT. [10][11][16]
Иными словами, разговор о профилях Windows сводится к тому, «что где хранить, насколько далеко это переносить и как восстанавливаться при сбое».
2. Что вообще такое «пользовательский профиль» Windows
Для начала полезно разделить понятия учётной записи и профиля.
flowchart LR
A[Учётная запись пользователя<br/>кто входит в систему] --> B[Пользовательский профиль<br/>настройки и данные этого человека]
C[Устройство / ОС] --> B
B --> D[Настройки рабочего стола]
B --> E[AppData]
B --> F[Documents / Desktop и т. д.]
B --> G[Настройки, видимые в HKCU]
- Учётная запись идентифицирует конкретного человека
- Профиль - это фактическое содержимое рабочей среды этого человека
- Устройство - это место, где профиль загружается и используется
В Microsoft Learn тоже поясняется, что пользовательский профиль включает набор папок профиля в файловой системе и регистрационный куст NTUSER.DAT, который загружается при входе в систему и используется как HKEY_CURRENT_USER. [1]
2.1 Это не «просто папки» - сюда входит и реестр
Это важный момент.
flowchart TD
A[Вход в систему] --> B[Определение папки профиля]
B --> C[Загрузка NTUSER.DAT]
C --> D[Использование как HKCU]
B --> E[Подготовка Desktop / Documents / AppData]
D --> F[Пользовательские настройки вступают в силу]
E --> F
Иными словами, если смотреть только на C:\Users\имя_пользователя, видна лишь половина картины.
В профиле Windows выделяются два основных слоя.
- Файловый слой
Desktop,Documents,Downloads,AppDataи т. д. - Слой реестра
HKCU, поддерживаемый загруженнымNTUSER.DAT
Разговор о повреждении профиля запутывается именно потому, что бывают случаи, когда ломается только файловая часть, и случаи, когда проблема возникает именно в регистрационном кусте. [1][11]
2.2 При первом входе шаблоном служит Default
Когда новый пользователь впервые входит на этот ПК, Windows создаёт локальный профиль на основе C:\Users\Default. [11]
flowchart LR
A[C:\Users\Default] --> B[Первый вход]
B --> C[Создание C:\Users\имя_пользователя]
C --> D[Загрузка NTUSER.DAT]
D --> E[Становится выделенной средой этого пользователя]
Если небрежно отнестись к этому моменту в контексте развёртывания образов или подготовки устройств, потом это оборачивается серьёзными проблемами.
Microsoft поясняет, что поддерживаемый способ настройки профиля по умолчанию - использование CopyProfile. Ручное копирование и другие устаревшие грубые способы дублирования могут привнести лишнюю информацию и вызвать проблемы со стабильностью приложений и системы. [12]
3. Как читать C:\Users\имя_пользователя
Если смотреть на пользовательский профиль со стороны папок, его структура выглядит примерно так.
flowchart TD
A["C:\Users\имя_пользователя"] --> B[Desktop]
A --> C[Documents]
A --> D[Downloads]
A --> E[Pictures]
A --> F[AppData]
A --> G[NTUSER.DAT]
F --> H[Roaming]
F --> I[Local]
F --> J[LocalLow]
На практике в первую очередь смотрят примерно сюда.
| Место | Что там хранится | Практический взгляд |
|---|---|---|
Desktop |
Файлы на рабочем столе | То, что видит пользователь |
Documents |
Документы, созданные пользователем | Часто попадают рабочие данные |
Downloads |
Загруженные объекты | Легко скапливается мусор |
AppData\Roaming |
Ближе к пользовательским настройкам | Для настроек, которые нужно переносить |
AppData\Local |
Ближе к специфичным для ПК данным и кэшу | Склонен разрастаться в объёме |
NTUSER.DAT |
Пользовательский реестр | Фактическое содержимое HKCU |
3.1 Рассматриваем AppData как три отдельные области
Именно здесь при разработке Windows-приложений и расследовании неполадок чаще всего возникает путаница.
Руководство Microsoft рекомендует использовать FOLDERID_RoamingAppData (Roaming AppData) для данных, специфичных для приложения, и FOLDERID_LocalAppData - для временных файлов и данных, не используемых на других компьютерах. [2]
Кроме того, в определениях известных папок (Known Folders) пути по умолчанию заданы так. [3]
%APPDATA%=%USERPROFILE%\AppData\Roaming%LOCALAPPDATA%=%USERPROFILE%\AppData\LocalLocalLow=%USERPROFILE%\AppData\LocalLow
flowchart LR
A[AppData] --> B[Roaming]
A --> C[Local]
A --> D[LocalLow]
B --> B1[Настройки, которые нужно переносить]
B --> B2[Небольшое пользовательское состояние]
C --> C1[Кэш]
C --> C2[Данные, которые можно пересоздать]
C --> C3[Состояние, специфичное для этого ПК]
D --> D1[Специальные случаи]
Как решать вопрос разграничения на практике
| Что нужно сохранить | Первый кандидат на место хранения | Причина |
|---|---|---|
| Пользовательские настройки | %APPDATA% |
Удобно управлять в разрезе пользователя |
| Кэш, специфичный для конкретного ПК | %LOCALAPPDATA% |
Легко считать данными, которые не переносятся на другие устройства |
| История входов, крупные кэши, миниатюры | %LOCALAPPDATA% |
При роуминге склонны утяжелять процесс |
| Документы, которые пользователь создаёт сам | Documents и т. д. |
Это результат работы, а не внутреннее состояние приложения |
| Изменяемые данные, общие для всех пользователей | ProgramData |
Не являются специфичными для конкретного пользователя |
ProgramData в определении известных папок Microsoft также описывается как данные приложений для всех пользователей, предназначенные для общих данных, которые не участвуют в роуминге. [3]
Чего здесь стоит избегать больше всего - это размещения данных времени выполнения конкретного пользователя в Program Files.
Это одновременно ломает и организацию профиля, и проектирование прав доступа.
3.2 У Public и Default разные роли
Здесь тоже легко запутаться.
flowchart LR
A["C:\Users"] --> B[Default]
A --> C[Public]
A --> D[Каждый пользователь]
B --> B1[Заготовка для создания новых профилей]
C --> C1[Общие объекты, видимые всем пользователям]
D --> D1[Фактические данные конкретного пользователя]
- Default - это шаблон для создания новых профилей
- Public - общая область, видимая всем пользователям
- Папка каждого пользователя - фактические данные конкретного человека
Эти три элемента выглядят похоже, но их роли совершенно разные.
4. Разбираем виды профилей
Хотя мы говорим «профиль» одним словом, на практике встречаются как минимум следующие его виды.
flowchart TD
A[Профили Windows] --> B[Локальный профиль]
A --> C[Роуминговый профиль]
A --> D[Mandatory-профиль]
A --> E[Temporary-профиль]
A --> F[Контейнер профиля FSLogix]
4.1 Локальный профиль
На обычном ПК это вариант по умолчанию.
- Создаётся на локальном диске этого ПК
- Автоматически не переносится на другие ПК
- Самый простой вариант для отдельно стоящего ПК
Microsoft тоже поясняет, что по умолчанию Windows создаёт локальный пользовательский профиль. [14]
4.2 Роуминговый профиль
В Microsoft Learn роуминговый пользовательский профиль описан как механизм, при котором профиль хранится на серверном общем ресурсе, чтобы пользователи получали одинаковые настройки ОС и приложений на нескольких компьютерах. [4][5]
flowchart LR
A[Профиль на общем сервере] <--> B[ПК-A]
A <--> C[ПК-B]
A <--> D[ПК-C]
Однако на практике есть следующие предостережения.
- Копирование и синхронизация при входе / выходе из системы склонны утяжеляться
- Хранение крупных данных в
AppData\Localсоздаёт проблемы - Подвержен влиянию различий версий ОС
- Сильно зависит от пути к общему ресурсу и качества сети
4.3 Mandatory-профиль
Mandatory-профиль - это «роуминговый профиль без сохранения», создаваемый администратором. [7][8]
Согласно пояснению Microsoft, в Mandatory-профиле изменения, внесённые пользователем в течение сеанса, не сохраняются так, как это происходит с обычным роуминговым профилем. [7]
Кроме того, в документации Win32 поясняется, что
- переименование
NTUSER.DATвNTUSER.MANделает профиль Mandatory - добавление
.manв конец имени папки пути к профилю делает его Super-mandatory
[8]
flowchart LR
A[Профиль, подготовленный администратором] --> B[Пользователь входит в систему]
B --> C[Во время работы изменения возможны]
C --> D[Выход из системы]
D --> E[Изменения не сохраняются]
Например, это хорошо подходит для таких сценариев:
- учебные устройства;
- терминалы приёма посетителей;
- киоски;
- общие устройства, которые каждый раз должны возвращаться в чистое состояние.
4.4 Temporary-профиль
Temporary-профиль - это не то, что выбирают при проектировании, а запасной вариант, который появляется, когда из-за ошибки не удаётся загрузить настоящий профиль. [9]
В Microsoft Learn поясняется, что при условии ошибки, из-за которой не удаётся загрузить настоящий профиль, выдаётся Temporary-профиль, который удаляется по завершении сеанса, а изменения теряются. [9]
flowchart TD
A[Начало загрузки обычного профиля] --> B{Удаётся ли загрузить}
B -->|Да| C[Обычный вход в систему]
B -->|Нет| D[Вход с Temporary-профилем]
D --> E[Работа возможна]
E --> F[Изменения теряются при выходе из системы]
Иными словами, состояние работы на Temporary-профиле - это уже само по себе признак неисправности.
4.5 Контейнер профиля FSLogix
В Microsoft Learn FSLogix описывается как механизм, обеспечивающий единообразный опыт работы с пользовательским профилем Windows в среде виртуальных рабочих столов. [13]
Контейнер профиля FSLogix - это подход, при котором весь пользовательский профиль хранится как VHD / VHDX, подключается при входе в систему и представляется так, будто это нативный профиль. [13][14]
flowchart LR
A[Профиль на VHD / VHDX] --> B[Подключение при входе в систему]
B --> C[Отображается как C:\Users\пользователь на хосте сеанса]
C --> D[Отключение при выходе из системы]
Для Azure Virtual Desktop Microsoft рекомендует использовать контейнеры профилей FSLogix. [14]
5. Чем отличаются роуминговый профиль, Folder Redirection и FSLogix
Об этих трёх механизмах часто говорят как об одном и том же, но их роли различаются.
flowchart TD
A[Перенос состояния пользователя] --> B[Роуминговый профиль]
A --> C[Folder Redirection]
A --> D[FSLogix]
B --> B1[Весь профиль на общий ресурс]
C --> C1[Только известные папки в другое место]
D --> D1[Подключение VHD/VHDX]
Если следовать классификации Microsoft Learn, различия легче увидеть так. [4][5][14]
| Способ | Что переносится | Для чего подходит | Где обычно тяжело |
|---|---|---|---|
| Роуминговый профиль | Весь профиль целиком | Традиционные доменные окружения | Крупные профили, задержки синхронизации, различия версий |
| Folder Redirection | Известные папки, например Documents | Централизованное управление документами | Не заботится о настройках приложений |
| FSLogix | Весь профиль, контейнеризованный | RDS / VDI / AVD | Проектирование хранилища, одновременные подключения, права доступа к общему ресурсу |
5.1 Folder Redirection переносит «только известные папки»
В Microsoft Learn Folder Redirection описывается как механизм, который перенаправляет путь известной папки в другое место. [4]
Например, если перенаправить Documents на файловый общий ресурс, пользователь видит её так же, как локальную, но фактически данные находятся в другом месте. [4]
flowchart LR
A[Documents] --> B[Фактические данные на файловом общем ресурсе]
C[Desktop] --> D[При необходимости отдельная настройка]
E[AppData] --> F[Как есть либо другой подход]
Иными словами, Folder Redirection - это не замена всего профиля целиком, а перенос отдельных папок.
5.2 Не стоит небрежно смешивать роуминговые профили разных поколений ОС
Microsoft поясняет, что роуминговые профили для Windows 10 / Server 2016 и новее несовместимы с более ранними версиями Windows. [6]
flowchart LR
A[Поколение Windows 7 / 8.1] -.осторожно со смешиванием.-> B[Один и тот же общий ресурс]
C[Windows 10 / Server 2016 и новее] -.осторожно со смешиванием.-> B
B --> D[Причина несогласованности / сбоев меню «Пуск» / сбоев панели задач]
Здесь важно следующее.
- Разделять версии профиля по поколениям ОС
- Не считать, что «раз это один и тот же пользователь, значит подойдёт та же папка»
- При развёртывании устройств и обновлении парка включать в план миграции совместимость профилей
[6]
6. Места хранения, которые в первую очередь должны решить разработчики и эксплуатационная команда
Разговор о профилях в итоге всегда возвращается сюда: что и куда класть.
flowchart TD
A[Данные, которые нужно сохранить] --> B{Это результат работы, создаваемый пользователем}
B -->|Да| C[Documents и т. д.]
B -->|Нет| D{Специфично ли это для конкретного ПК}
D -->|Да| E[%LOCALAPPDATA%]
D -->|Нет| F{Это настройка конкретного пользователя}
F -->|Да| G[%APPDATA%]
F -->|Нет| H{Это изменяемые данные, общие для всех пользователей}
H -->|Да| I[ProgramData + ACL]
H -->|Нет| J[Пересмотреть место хранения]
6.1 Разделяем файлы, создаваемые пользователем, и внутреннее состояние приложения
Если смешать эти две категории, легко ломаются и резервное копирование, и миграция.
- Результаты работы, с которыми пользователь работает осознанно
Documents,Pictures, рабочие папки хранения - Внутреннее состояние приложения Настройки, кэш, миниатюры, информация о сеансе, рабочие файлы
Первое - это рабочие данные, второе существует ради удобства приложения. Хотя и то, и другое - «файлы», обращаться с ними стоит по-разному.
6.2 Что размещать в %APPDATA%
Здесь, как правило, размещают:
- небольшие настройки;
- пользовательские предпочтения;
- состояние, которое должно выглядеть одинаково на нескольких устройствах;
- то, что не страшно переносить вместе с профилем.
Документация Fast User Switching тоже указывает на FOLDERID_RoamingAppData как на место для данных, специфичных для приложения. [2]
6.3 Что размещать в %LOCALAPPDATA%
Сюда стоит помещать всё, что с точки зрения пересоздаваемости и переносимости должно оставаться локальным.
- Кэш, который можно пересоздать
- Состояние, имеющее смысл только локально
- Крупные рабочие файлы
- То, что не хочется переносить по соображениям производительности
В определениях известных папок LocalAppData тоже равен %USERPROFILE%\AppData\Local. [3]
6.4 Что размещать в ProgramData
Данные, общие для всех пользователей, но изменяющиеся во время работы, - кандидат на ProgramData. [3]
Например:
- общие словари;
- файлы определений, общие для всех пользователей;
- изменяемые данные, общие для службы и нескольких пользователей.
Однако здесь необходимо сразу продумывать проектирование ACL.
Важно не рассуждение «раз это общее, значит просто в ProgramData», а решение о том, кто читает, а кто пишет.
6.5 Когда нужно настроить профиль по умолчанию
При развёртывании образов вполне обычна задача «дать всем новым пользователям одинаковые начальные настройки».
В этом случае безопаснее не трогать Default небрежно, а собирать его через поддерживаемый Microsoft метод на основе CopyProfile. [12]
flowchart LR
A[Начальная настройка под учётной записью администратора] --> B[Sysprep + CopyProfile]
B --> C[Применение к профилю Default]
C --> D[Применяется ко всем последующим новым пользователям]
Подходы вроде «вручную скопировать C:\Users\A с одного ПК в Default на другом ПК» выглядят быстрыми, но впоследствии их легко сломать. [12]
7. Как разбираться, если профиль повреждён, стал временным или перестал синхронизироваться
Это самое болезненное место на практике. Более того, симптомы выглядят похоже, из-за чего при небрежном разделении на категории легко уйти не в ту сторону.
7.1 Сначала делим симптомы на три группы
flowchart TD
A[Похоже на проблему с профилем] --> B{Удаётся ли войти в систему}
B -->|Да| C{Выглядит ли всё сброшенным}
B -->|Нет| D[Категория сбоев загрузки]
C -->|Да| E[Temporary / повреждение / другой профиль]
C -->|Нет| F{Часть настроек откатывается}
F -->|Да| G[Категория роуминга / перенаправления / синхронизации]
F -->|Нет| H[Возможна проблема конкретного приложения]
В целом выделяются три категории.
- Сбой при входе в систему
- Вход выполняется, но всё выглядит сброшенным
- Синхронизируется только часть данных
7.2 Какие журналы смотреть в первую очередь
В Microsoft Learn рекомендуется при расследовании проблем с профилем смотреть в следующем порядке. [10]
- Журнал Application
- Оперативный журнал (Operational) службы User Profile Service
- При необходимости - диагностический журнал (Diagnostic)
- При дальнейшей необходимости - трассировки ETL
Конкретные пути указаны ниже. [10]
- Просмотр событий
Applications and Services Logs > Microsoft > Windows > User Profile Service > Operational - Для более подробной информации
... > User Profile Service > Diagnostic
flowchart LR
A[Журнал Application] --> B[Оперативный журнал]
B --> C[Диагностический журнал]
C --> D[Трассировка ETL]
На практике безопаснее не сразу переходить к восстановлению реестра или удалению папок, а сначала по журналам понять общее направление: «сбой загрузки», «сбой копирования», «отказ в доступе», «слишком длинный путь», «не удаётся записать на общий ресурс» и т. п.
7.3 Частые причины
Атрибуты и права доступа NTUSER.DAT / USRCLASS.DAT
Microsoft поясняет, что если NTUSER.DAT или USRCLASS.DAT помечены атрибутом «только для чтения» либо не хватает нужных прав доступа, загрузка профиля может завершиться неудачей. [11]
Причина неброская, но её упущение сильно затягивает расследование.
flowchart LR
A[Загрузка профиля] --> B{Доступны ли файлы DAT}
B -->|Нет| C[Сбой входа / рабочий стол по умолчанию / Temporary]
B -->|Да| D[Обычная загрузка]
Длинный путь при копировании во время роуминга
В базе знаний Microsoft описан случай, когда из-за длинного имени сервера или общего ресурса на стороне пути к общему ресурсу итоговый путь назначения становится слишком длинным, и это приводит к переходу на временный профиль с событием Event ID 1509. [16]
На первый взгляд это выглядит как простое ограничение по длине пути, но на деле причиной нередко становится само проектирование места роуминга.
Записи реестра / папок, оставшиеся после неполного удаления
У Microsoft есть статья с примерами скриптов для очистки осиротевшей информации, оставшейся в реестре и в C:\Users, чтобы предотвратить создание TEMP-профилей. [15]
Из неё видно, что простое удаление папки - это ещё не конец истории.
flowchart LR
A[Небрежное удаление старого профиля] --> B[Остаются данные реестра]
B --> C[Несогласованность при следующем входе]
C --> D[Причина TEMP-профилей или лишних папок]
7.4 С чего начать проверку
| Симптом | Куда смотреть в первую очередь | Типичная причина |
|---|---|---|
| Сбой входа в систему | Application / Operational | Сбой загрузки куста, права доступа, повреждение |
| Рабочий стол выглядит сброшенным | Operational / Diagnostic | Переход на Temporary-профиль |
| Изменения при роуминге не сохраняются | Путь к общему ресурсу, события, версии | Права доступа к общему ресурсу, сеть, длина пути, различия версий |
| Проблема только у новых пользователей | Создание профиля на основе C:\Users\Default |
Проблема профиля по умолчанию |
| На общих ПК накапливается всё больше «мусора» | Политика удаления, настройки Shared PC | Недостаточная автоматическая очистка |
8. Какой способ выбрать
Здесь нет одного «правильного ответа». Всё зависит от характера использования.
flowchart TD
A[Характер использования] --> B[Персональный ПК]
A --> C[Рабочий ПК в домене]
A --> D[Общий ПК / учебное устройство]
A --> E[RDS / VDI / AVD]
B --> B1[В основном локальный]
C --> C1[Folder Redirection / роуминг по мере необходимости]
D --> D1[Mandatory / Shared PC / очистка]
E --> E1[FSLogix как первый кандидат]
8.1 Персональный ПК
Обычно достаточно локального профиля.
- Пользовательские настройки - в
AppData - Результаты работы - в
Documents - При необходимости синхронизация документов через отдельный слой вроде OneDrive
Эта конфигурация - самая простая.
8.2 Рабочий ПК в домене
В зависимости от требований комбинируют следующее.
- Нужно централизованно управлять данными документов → Folder Redirection
- Нужно, чтобы одинаковые настройки переносились между несколькими ПК → Роуминговый профиль
- Есть смешение версий ОС или крупные профили → Осторожное проектирование либо пересмотр подхода
В Microsoft Learn тоже отмечается, что Folder Redirection и Roaming User Profiles помогают с централизацией, работой в автономном режиме и упрощением резервного копирования. [4]
8.3 Общий ПК / учебные устройства / киоски
Для этого сценария важнее не «сохранить персональную настройку», а каждый раз возвращаться в чистое состояние.
Есть три кандидата.
- Mandatory-профиль
- Режим Shared PC
- Политика автоматического удаления старых профилей
У Microsoft есть политика Delete user profiles older than a specified number of days on system restart, позволяющая удалять при перезапуске профили, не использовавшиеся указанное число дней. [17]
В руководстве по Shared PC тоже приводится подход, сочетающий автоматическое управление и удаление учётных записей / профилей на общих устройствах. [18]
8.4 RDS / VDI / Azure Virtual Desktop
Здесь во многих случаях одного лишь традиционного роумингового профиля недостаточно.
Microsoft рекомендует контейнеры профилей FSLogix для Azure Virtual Desktop, поясняя, что VHDX / VHD подключается при входе в систему и обрабатывается как нативный пользовательский профиль. [14]
flowchart LR
A[Несколько хостов сеансов] --> B[Общее хранилище]
B --> C[Пользовательский профиль на VHDX]
C --> D[Подключение к тому хосту, к которому выполнено подключение]
Особенно стоит в первую очередь рассмотреть FSLogix при таких условиях:
- хост сеанса каждый раз меняется;
- используются службы Outlook / OneDrive / Microsoft 365;
- в непостоянном (non-persistent) VDI перенос профиля обязателен;
- задержка входа в систему из-за роумингового профиля становится проблемой.
9. Частые заблуждения
9.1 «Если создать учётную запись, тот же профиль будет использоваться везде»
Это не так. Учётная запись - это идентификатор, а профиль - фактические данные на стороне устройства. Насколько далеко он переносится, зависит от способа: локальный, роуминговый, Folder Redirection, FSLogix и т. д. [4][14]
9.2 «Скопировать C:\Users\имя_пользователя достаточно для миграции»
Небрежное копирование опасно, потому что затрагивает:
- совместимость версий ОС;
NTUSER.DAT;- права доступа;
- состояние, специфичное для приложений;
- смешение с профилем по умолчанию.
В частности, при роуминге между поколениями ОС сама Microsoft исходит из необходимости разделения версий профиля. [6]
9.3 «Mandatory и Temporary - это примерно одно и то же»
Это два разных понятия. Mandatory - это доступный только для чтения профиль, который администратор создаёт целенаправленно, а Temporary - запасной вариант на случай, когда из-за ошибки не удаётся прочитать настоящий профиль. [8][9]
9.4 «Если нужна синхронизация, достаточно поместить всё в Roaming»
Это опасно. Если положить настройки и огромный кэш в один и тот же «ящик», вход и выход из системы, а также обработка сбоев становятся тяжёлыми. Разделять то, что должно переноситься, и то, что должно оставаться локальным, удобнее для эксплуатации. [2][3]
9.5 «Если получился временный профиль, можно просто продолжать им пользоваться»
Этого лучше избегать. Temporary-профиль по определению исчезает при выходе из системы, поэтому, если продолжать работу в этом состоянии, возникает риск разместить важные данные там, откуда они позже пропадут. [9]
10. Итог
Пользовательский профиль Windows - это не просто обозначение папок под C:\Users.
- Набор файлов
- Пользовательский реестр, ядром которого выступает
NTUSER.DAT - Порядок эксплуатации: где хранится профиль, как он синхронизируется и как удаляется
Если рассматривать всё это как единую схему, картина становится намного понятнее.
На практике в первую очередь стоит зафиксировать эти шесть пунктов.
- Для отдельного ПК за основу лучше брать локальный профиль
- Место хранения данных приложения стоит разделять на
Roaming/Local/ProgramData - В доменном окружении не стоит путать роуминговый профиль и Folder Redirection
- Для общих устройств стоит рассмотреть Mandatory / очистку / Shared PC
- Для RDS / VDI / AVD в качестве первого кандидата стоит рассматривать FSLogix
- При сбое в первую очередь стоит смотреть журналы службы User Profile Service
В конечном счёте проектирование профиля - это не вопрос «куда сохранять», а вопрос «что кому принадлежит и насколько далеко это должно переноситься». Когда это определено, развёртывание устройств, проектирование Windows-приложений и расследование сбоев становятся заметно проще.
11. Похожие статьи
- Когда Windows действительно требует права администратора - UAC, защищённые области и способы распознать это по архитектуре
- Как ускорить проверку разработки Windows-приложений с помощью Windows Sandbox
12. Услуги, связанные с этой темой
Разработка Windows-приложений
То, как разделяются места хранения пользовательских настроек, логов, кэшей и общих данных, во многом определяет эксплуатационные качества и сопровождаемость Windows-приложения. Если нужно охватить весь путь от анализа требований до проектирования, реализации и долгосрочной эксплуатации, эта тема хорошо вписывается в контекст разработки Windows-приложений.
Посмотреть услугу / Связаться с нами
Техническая консультация и ревью архитектуры
Выбор между локальным, роуминговым подходом и FSLogix, изменение эксплуатации существующих устройств, разграничение мест хранения данных - всё это заметно влияет на результат, если проработать заранее, до реализации. Если нужно начать с выбора подхода и определения границ, эту тему удобно выделить как отдельную техническую консультацию или ревью архитектуры.
Посмотреть услугу / Связаться с нами
Расследование сбоев и анализ причин
Разбор перехода на Temporary-профиль, сбоев входа в систему, ошибок сохранения при выходе из системы, а также проблем, связанных с путями к общим ресурсам, хорошо сочетается с расследованием сбоев. Это удобная точка входа для консультации, когда нужно докопаться до сути плохо воспроизводимых проблем с профилем на основе журналов, событий, прав доступа и конфигурации общего ресурса.
Посмотреть услугу / Связаться с нами
13. Справочные материалы
-
Microsoft Learn, About User Profiles (Windows) Компоненты пользовательского профиля,
NTUSER.DAT, основы Temporary-профиля. -
Microsoft Learn, Fast User Switching Рекомендация использовать
FOLDERID_RoamingAppDataдля данных, специфичных для приложения, иFOLDERID_LocalAppData- для данных, не используемых на других компьютерах. -
Microsoft Learn, KNOWNFOLDERID, CSIDL Определения известных папок, включая
%APPDATA%,%LOCALAPPDATA%,LocalLowиProgramData. -
Microsoft Learn, Folder Redirection and Roaming User Profiles in Windows and Windows Server Различия между Folder Redirection и Roaming User Profiles, подход к централизованному управлению.
-
Microsoft Learn, Deploy roaming user profiles Практические шаги развёртывания роумингового профиля: права доступа к общему ресурсу, GPO, версионирование.
-
Microsoft Learn, Roaming user profiles of earlier versions of Windows are incompatible with Windows 10, Windows Server 2016, and later versions Несовместимость между поколениями ОС и версионирование профилей.
-
Microsoft Learn, Create mandatory user profiles Назначение и способ создания Mandatory-профиля.
-
Microsoft Learn, Mandatory User Profiles Определение
NTUSER.MANи Super-mandatory-профиля. -
Microsoft Learn, Temporary User Profiles Определение и свойства Temporary-профиля.
-
Microsoft Learn, Troubleshoot user profiles with events Разбор проблем с помощью журналов Application / Operational / Diagnostic.
-
Microsoft Learn, Error occurs during desktop setup and desktop location is unavailable when you log on to Windows for the first time Создание нового профиля на основе
C:\Users\Default, проблемы с атрибутами и правами доступаNTUSER.DAT/USRCLASS.DAT. -
Microsoft Learn, Customize the default local user profile when you prepare an image of Windows Поддерживаемый способ настройки профиля по умолчанию через
CopyProfile. -
Microsoft Learn, What is FSLogix, Types of Containers Основы FSLogix, концепция Profile Container.
-
Microsoft Learn, User profile management for Azure Virtual Desktop with FSLogix profile containers, Configure profile containers using FSLogix Рекомендация для Azure Virtual Desktop, подход с контейнером профиля на основе VHD / VHDX.
-
Microsoft Learn, Scripts: Clean up profile folder information and prevent TEMP user profiles from being created Связь между осиротевшей информацией профиля и TEMP-профилями.
-
Microsoft Learn, User profile cannot be loaded with Event ID 1509: DETAIL - The filename or extension is too long Проблема длинного пути при сохранении роумингового профиля.
-
Microsoft Learn, ADMX_UserProfiles Policy CSP Определения политик, включая
Delete user profiles older than a specified number of days on system restart. -
Microsoft Learn, Configure a shared or guest Windows device Режим Shared PC и управление учётными записями / профилями на общих устройствах.
Похожие статьи
Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.
Защита от повторного запуска приложения Windows — именованный Mutex и активация окна при повторном запуске
Разбираем, как реализовать защиту бизнес-приложения Windows от повторного запуска с помощью именованного Mutex: подводные камни RDP-окруж...
Аутсорсинг и контрактная разработка Windows-приложения: что стоит прояснить перед заказом
Перед тем как заказать аутсорсинг или контрактную разработку Windows-приложения, разберём, что нужно прояснить: доработка существующего П...
Странная любовь разработчика, или Как я перестал беспокоиться и полюбил Windows
Windows — это хлопотно. Но эти хлопоты — от того, что данная ОС десятилетиями несла на себе реальный бизнес.
Почему Windows показывает сообщение «Windows защитил ваш компьютер»
Разбираем с практической точки зрения, почему при распространении Windows-приложений появляется предупреждение SmartScreen: подпись кода,...
Что такое ClickOnce - механизм работы, обновления и случаи применения с практической точки зрения
Разбираем ClickOnce - технологию распространения .NET-приложений для Windows: манифесты, обновления, кэш, подпись, а также случаи, где он...
Связанные темы
Эти страницы показывают тему статьи в более широком контексте услуг и решений.
Технические темы Windows
Раздел о разработке Windows, расследовании сбоев и использовании существующих активов.
Услуги по этой теме
Статья напрямую связана со следующими услугами.
Разработка приложений для Windows
То, как разделяются места хранения пользовательских настроек, логов, кэшей и общих данных, во многом определяет эксплуатационные качества и сопровождаемость Windows-приложения.
Технические консультации и ревью дизайна
Эта тема хорошо сочетается с этапом выбора между локальным, роуминговым подходом и FSLogix, а также с разграничением мест хранения данных.
Частые вопросы
Вопросы, которые часто возникают при консультациях по теме статьи.
- Что такое NTUSER.DAT?
- NTUSER.DAT - это файл, представляющий собой пользовательский регистрационный куст (registry hive), входящий в пользовательский профиль Windows. Он находится прямо в папке C:\Users\имя_пользователя, загружается при входе в систему и используется как HKEY_CURRENT_USER (HKCU). То есть пользовательский профиль состоит из двух слоёв: набора файлов вроде Desktop и AppData, и слоя реестра, ядром которого выступает NTUSER.DAT. Если NTUSER.DAT помечен атрибутом «только для чтения» или для него не хватает нужных прав доступа, загрузка профиля может завершиться неудачей, что приводит к сбою входа в систему или созданию временного профиля.
- Что такое пользовательский профиль Windows? Чем он отличается от учётной записи?
- Учётная запись определяет, «кто входит в систему», а пользовательский профиль - это фактическое содержимое рабочей среды этого человека. Профиль - это не просто папка C:\Users\имя_пользователя, а набор файлов (Desktop, Documents, AppData и т. д.) вместе с пользовательским регистрационным кустом NTUSER.DAT. Когда новый пользователь впервые входит в систему, новый профиль создаётся на основе C:\Users\Default. То, насколько далеко переносятся настройки, определяется выбором способа: локальный, роуминговый, Folder Redirection или FSLogix.
- Как правильно разделять %APPDATA% и %LOCALAPPDATA%?
- Базовое правило: настройки, которые нужно переносить с пользователем, размещают в %APPDATA% (AppData\Roaming), а кэш и временное состояние, специфичные для конкретного компьютера, - в %LOCALAPPDATA% (AppData\Local). Кэши, которые можно пересоздать, и крупные рабочие файлы лучше держать в Local, иначе вход и выход из системы становятся медленнее. Изменяемые данные, общие для всех пользователей, - кандидат на ProgramData, но здесь нужно сразу продумывать ACL, определяющий, кто может читать и писать. Размещать данные времени выполнения конкретного пользователя в Program Files следует избегать.
- Что делать, если вход выполнен с временным профилем (Temporary profile)?
- Temporary-профиль - это аварийный запасной вариант, который выдаётся, когда из-за ошибки не удаётся загрузить настоящий профиль; при выходе из системы он удаляется, а изменения теряются. Продолжать работу в этом состоянии опасно, так как важные данные могут пропасть. При расследовании не стоит сразу лезть в C:\Users - сначала проверяют журнал Application, затем оперативный (Operational) журнал службы User Profile Service, а при необходимости и диагностический (Diagnostic) журнал. Частые причины: проблемы с атрибутами или правами доступа NTUSER.DAT / USRCLASS.DAT, слишком длинный путь к месту роуминга, а также записи реестра, оставшиеся после неполного удаления профиля.
Об авторе
Страница с профилем автора статьи.
Го Комура
Представитель KomuraSoft LLC
Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.
Публичные ссылки