Re[8]: Получить Profile Path всех пользователей
От: Mystic Artifact  
Дата: 08.04.19 16:21
Оценка: 5 (2)
Здравствуйте, qaz77, Вы писали:

Q>Здравствуйте, Mystic Artifact, Вы писали:

MA>>Я могу переместить свой профиль в любое место на диске штатными средствами OS.
Q>Как переместить весь профиль целиком?
Q>В проводнике страничка "Расположение" есть только для подпапок профиля (Документы и др.)
Со штатными средствами я наверное загнул... Хотя мне кажется в NT4 или 2000 это было...
Так или иначе я сам периодически у себя такое делаю.

Путь к профилю пользователя находится по пути в реестре:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-...\ProfileImagePath
. Это кстати и есть ответ на вопрос ТС.

Для того что-бы переместить профиль необходимо (выполнять из другого аккаунта):
1) изменить путь профиля в реестре
2) переместить все файлы
3) правильно настроить права доступа
4) перезагрузится (!) logon/logoff тут не поможет

К сожалению, есть ещё некоторые гении софтостроения, которые не знают о существовании %USERPROFILE%, и умудряются писать в
C:\Users\user_profile\IntelGraphicsProfiles\...
, ну и местами от МС тоже такое встречается.
Отредактировано 08.04.2019 16:26 Mystic Artifact . Предыдущая версия . Еще …
Отредактировано 08.04.2019 16:24 Mystic Artifact . Предыдущая версия .
Re[5]: Получить Profile Path всех пользователей
От: qaz77  
Дата: 21.03.19 12:48
Оценка: 2 (1)
Здравствуйте, -prus-, Вы писали:
P>Хотелось бы как-то более универсально чтоль, т.к. системный диск может быть и не C: и папки могут быть расположены на других томах

SHGetPathFolder с CSIDL_PROFILE дает путь к текущему профилю.
На один уровень вверх — и получаем C:\Users или аналог.
Перемещение профиля двигает на другие тома только "Документы", "Видео" и т.п., а также Temp.
AppData, Desktop и куча всего еще остается в стандартной папке юзера.
Re[6]: Получить Profile Path всех пользователей
От: Mystic Artifact  
Дата: 07.04.19 13:21
Оценка: +1
Здравствуйте, qaz77, Вы писали:

Я могу переместить свой профиль в любое место на диске штатными средствами OS. Т.е. родительский каталог от пути к профилю — это строго не папка с пользователями, а лишь частный случай, хоть и дефолтный. Ну и про переименование уже сказали. Так, что все таки лучше на такие технологии не рассчитывать... или хотя бы проверять потом, что найденные потом подкаталоги действительно похожи на профили.
Получить Profile Path всех пользователей
От: -prus-  
Дата: 19.03.19 16:53
Оценка:
Всем привет!

Перечисляю всех пользователей через NetQueryDisplayInformation.
Далее мне нужно получить Profile Path для всех. Попробовал NetUserGetInfo для USER_INFO_2, но там постоянно пустые usri2_home_dir. Видел SHGetKnownFolderPath, но не пойму, как для всех пользователей это сделать. Перечислять SID из реестра в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList? Подскажите, как правильно?
С уважением,
Евгений
Re: Получить Profile Path всех пользователей
От: CEMb  
Дата: 20.03.19 02:55
Оценка:
Здравствуйте, -prus-, Вы писали:

P>Всем привет!


P>Перечисляю всех пользователей через NetQueryDisplayInformation.

P>Далее мне нужно получить Profile Path для всех.

Это же про AllUsers речь?
SHGetPathFolder(0, CSIDL_COMMON_*, ...); ?
Re[2]: Получить Profile Path всех пользователей
От: -prus-  
Дата: 20.03.19 09:06
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>Это же про AllUsers речь?

CEM>SHGetPathFolder(0, CSIDL_COMMON_*, ...); ?

Не. Папки, которые для каждого user'a. Типа есть "Петя" и "Вася" и мне нужно получить C:\Users\Петя и C:\Users\Вася. Или я чего не понял?
С уважением,
Евгений
Re[3]: Получить Profile Path всех пользователей
От: qaz77  
Дата: 20.03.19 10:29
Оценка:
Здравствуйте, -prus-, Вы писали:
P>Не. Папки, которые для каждого user'a. Типа есть "Петя" и "Вася" и мне нужно получить C:\Users\Петя и C:\Users\Вася. Или я чего не понял?

Можно просто перечислить папки в C:\Users, игнорируя symlink и junction.
Настоящие папки там только для настоящих пользователей и Default — шаблон для новых.

Только следует иметь в виду, что имя папки может состоять только из имени пользователя, а может из имени плюс имя компьютера.
На серверных операционках папка может называться как-то так: "Вася.WinServ-123244".
Re[4]: Получить Profile Path всех пользователей
От: -prus-  
Дата: 20.03.19 15:40
Оценка:
Здравствуйте, qaz77, Вы писали:

Q>Можно просто перечислить папки в C:\Users, игнорируя symlink и junction.

Q>Настоящие папки там только для настоящих пользователей и Default — шаблон для новых.

Хотелось бы как-то более универсально чтоль, т.к. системный диск может быть и не C: и папки могут быть расположены на других томах
С уважением,
Евгений
Re[6]: Получить Profile Path всех пользователей
От: -prus-  
Дата: 21.03.19 17:23
Оценка:
Здравствуйте, qaz77, Вы писали:

Q>SHGetPathFolder с CSIDL_PROFILE дает путь к текущему профилю.

Q>На один уровень вверх — и получаем C:\Users или аналог.
Q>Перемещение профиля двигает на другие тома только "Документы", "Видео" и т.п., а также Temp.
Q>AppData, Desktop и куча всего еще остается в стандартной папке юзера.

Как тогда быть с ситуацией, когда пользователя можно переименовать с "Вася" на "Хрюндель" в панели управления, а папка-то его останется C:\Users\Вася? И когда я буду перечислять все в C:\Users\*, то там будет "Вася" все равно
С уважением,
Евгений
Re[7]: Получить Profile Path всех пользователей
От: qaz77  
Дата: 22.03.19 07:05
Оценка:
Здравствуйте, -prus-, Вы писали:
P>Как тогда быть с ситуацией, когда пользователя можно переименовать с "Вася" на "Хрюндель" в панели управления, а папка-то его останется C:\Users\Вася? И когда я буду перечислять все в C:\Users\*, то там будет "Вася" все равно

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

У меня была задача деплоить файлы для всех существующих и добавляемых в будущем пользователей.
Поэтому я просто перебирал папки и копировал туда нужные файлы (это из инсталятора с админскими правами),
в Default тоже — для пользователей, которых добавят в будущем.
Re[7]: Получить Profile Path всех пользователей
От: qaz77  
Дата: 08.04.19 08:44
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:
MA>Я могу переместить свой профиль в любое место на диске штатными средствами OS.

Как переместить весь профиль целиком?
В проводнике страничка "Расположение" есть только для подпапок профиля (Документы и др.)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.