Где windows хранит путь к перемещенным папкам профиля?
Делаю программу резервного копирования.
Как обратиться к папкам текущего пользователя если они на родном месте понятно, но у многих пользователей папки перемещены на другой диск и как их находить непонятно.
Так как меня явно не правильно поняли опишу подробнее.
Если открыть свойства некоторых папок (рабочий стол, документы, загрузки итп) там будет вкладка расположение. На вкладке есть кнопка переместить позволяющая перенести соответствующую папку куда угодно. Папка профиля пользователя при этом остаётся на месте.
Дополнительно:
Хранит оно в реестре, но это вполне может меняться с обновлениями.
Лучше использовать это:
https://learn.microsoft.com/en-us/windows/win32/sh...
- Powershell:
# Получить варианты имени KnownFolders [Enum]::GetNames([System.Environment+SpecialFolder]) # Использовать [System.Environment]::GetFolderPath('StartMenu')# Получить варианты имени KnownFolders [Enum]::GetNames([System.Environment+SpecialFolder]) # Использовать [System.Environment]::GetFolderPath('StartMenu')
в реестре хранит
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders |
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders
Перемещенные папки пользовательских профилей, как правило, хранятся централизованно на каком-то сетевом диске - попробуйте бэкапить этот сетевой диск...
Или задача несколько другая и тут впору использовать теневые копии?
set в cmd
ну или сюда https://learn.microsoft.com/en-us/powershell/modul...
ps к примеру в PowerShell
[Environment]::GetFolderPath("Desktop")
- Нет переменной ссылающейся напрямую на рабочий стол, есть только на папку пользователя.
- Дмитрий, отлично. и какое значение?
.. по дефолту рабочий стол в папке пользователя живет со стандартным именем.. - Дмитрий, пример для документов типа такой %USERPROFILE%Documents
- Дмитрий, синтаксис для разных методов скриптования может отличаться (две косых где надо вместо одной)
... еще есть затруднения? - Это по дефолту да но папки можно переместить и тогда они будут в другом месте
- Дмитрий, изначально воспринял вопрос, как о "плавающих" профилях в АД..
поясняйте тогда уж подробнее..
скажем в реестре точно есть прямые указания. сами загуглить сможете? ))
ветка HKEY_CURRENT_USER - Дмитрий, дома уже привык к onedrive. если разрешить "стол, доки, картинки" бекапить, он их перемещает к себе..
но из опыта знаю, что некоторые проги написаны туповато, и пытают использовать дефолтные папки..
.. решение для себя - дублирую линковкой в оригинальное расположение. и умные, и не очень проги, работают по факту с одним и тем же каталогом.. - Дмитрий, в принципе, все скриптабельно.. даже если большое хозяйство (точнее тогда сам бог велел скриптовать )))
.. думаю вполне рационально делать линки в оригинальное размещение.. именно по тому что не все проги понимают факт перемещения..
дальше уже сами решайте )) - Дмитрий, PowerShell гарантирует независимость от изменений структуры реестра + ваша хотелка, конкретные папки ))
Возможно вы пытаетесь решить проблему не с той стороны. Правильнее сделать перемещаемые профили пользователей, а бекапить уже их серверную копию - там они точно будут лежать все вместе.
Соответственно если комп пользователя, случайно, например выпадет из окна 11-го этажа - то пользователь просто сядет на любой другой, введет пароль и получит свои обои с котиками и файлы на рабочем столе.
А если из окна выпадет сервер - то поднимете копию из бэкапа.
- Моя воля я бы вообще на каждого пользователя свою отдельную папку выдавал, с своим Program Files, AppData, Comon, Temp чтобы он мог пользоваться всей платформой независимо от других пользователей. Ну, чтобы у каждого пользователя можно было легко сделать доступ только к одной папке диска, в которой он живёт и всё делает. Была бы идеальная ОС. Сам так мучаюсь с этим, приходится крутитья всякие виртуалки, WSL и т.п. и всё оно работает не так быстро всё равно как хотелось бы, всё что использует графику сразу отпадает
Ответы:
Вообще по пользователям в реестре: HKLMSOFTWAREMicrosoftWindows NTCurrentVersionProfileList
Если нужен только текущий пользователь, то переменная окружения %USERPROFILE%
Пользовательский профиль можно переместить весь, тогда изменения будут в USERPROFILE и в реестре.
Но можно переносить и отдельные папки профиля в другое место. Тут уже не знаю точно как винда это хранит. Из возможных вариантов:
1. где-то в пользовательском реестре лежит новый путь
2. вместо стандартного каталога записывается ссылка на новое место
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Windows хранит путь к перемещенным папкам профиля в специальном реестровом ключе. Для того чтобы найти этот путь, следует выполнить следующие шаги:
1. Откройте Реестр Windows, нажав Win + R и введя команду regedit.
2. Перейдите к следующему пути: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders.
3. В этом разделе вы найдете различные значения, каждое из которых соответствует одной из специальных папок пользователя, таких как Документы, Загрузки, Изображения и т.д.
4. Для каждого значения будет указан путь к соответствующей папке. Например, значение "Desktop" будет содержать путь к рабочему столу.
Пример кода на PHP для получения пути к перемещенной папке профиля:
$regPath = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"; $regKey = "Desktop"; $command = 'reg query "'.$regPath.'" /v '.$regKey; exec($command, $output); foreach ($output as $line) { if (strpos($line, $regKey) !== false) { $path = explode(" ", $line)[3]; // Получаем путь к папке echo "Путь к папке Desktop: ".$path; } }
Этот код использует функцию exec() для выполнения команды reg query в командной строке Windows и получения информации о пути к папке Desktop. Полученный путь затем выводится на экран.
Надеюсь, этот ответ поможет вам найти путь к перемещенным папкам профиля на Windows. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать!