Откуда sysdm.cpl,EditUserProfiles берет данные?

Откуда sysdm.cpl,EditUserProfiles берет данные?

Запуск этой команды rundll32 sysdm.cpl,EditUserProfilesотобразит окно «Профили пользователей», в котором будут показаны сведения о профилях, сохраненных на этой машине. Скорость загрузки этого экрана предполагает, что эти данные хранятся где-то локально, а не генерируются на лету.

Я пытаюсь понять, где находятся эти данные, чтобы их можно было извлечь программным способом, поскольку запросы Win32_UserProfileпредоставляют только подмножество данных, и я специально ищу размер профиля, а не вычисляю его вручную.

решение1

Размеры папок не хранятся где-либо специально как переменная, они вычисляются, когда вы нажимаете правой кнопкой мыши -> свойства в папке профиля 'c:\users'. Любые данные о местоположении или подмножестве, которые вам нужны, будут найдены в реестре в этом ключе:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Если вам нужно собрать список размеров профилей, лучше всего запросить 'c:\users'. powershell был бы моим первым средством для этого. Обратите внимание также, что расположение 'c:\users' будет содержать полный профиль только в том случае, если не включены перемещаемые профили и вы не используете политику перенаправления папок, в противном случае вам нужно будет запросить расположение, в котором они хранятся.

Если вас интересует метод powershell, см. ссылку ниже. Здесь подробно описано, как использовать модуль folder-size, затем вам нужно будет просто добавить имя папки для идентификации. Готовый продукт, который сможет извлечь это для вас, называется 'spacesniffer' - запустите его снова в c:\users, и он предоставит вам график, показывающий различные размеры фигур для каждого профиля, и вы даже можете экспортировать его в файл, если это необходимо.

правка: забыл ссылкуhttps://www.gngrninja.com/script-ninja/2016/5/24/powershell-calculating-folder-sizes

spacesniffer:http://www.uderzo.it/main_products/space_sniffer/

решение2

Предупреждение:Тема слишком обширна, чтобы объяснить ее в коротких вопросах и ответах. Кому интересно, пройдитесь по всемупапка sysdmв репозитории ReactOS.

Здесь я суммирую процедуру из Windows 10. Подробности я беру из BOOL EditUserProfiles(HWND hWndParent)функции в sysdm.cplфайле.

  1. Он открывает HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList раздел реестра RegOpenKeyExW()и перечисляет все вложенные разделы реестра в нем.

  2. ProfileImagePathЗначение реестра указывает %UserProfile%путь к папке.

  3. Из этого пути FindFirstFileW()извлекает время и дату последнего изменения.

  4. Sidпредоставляет Security IDentifier. Каждый зарегистрированный пользователь имеет свой собственный уникальный SID. Из этого значения SID LookupAccountSidW()предоставляет имя пользователя, доменное имя и т. д.

  5. Многое другое...

Связанный контент