Откуда sysdm.cpl,EditUserProfiles получают данные?

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

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

2 ответа

Решение

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

HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \Microsoft\Windows NT\CurrentVersion\ProfileList

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

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

редактировать: забыл ссылку https://www.gngrninja.com/script-ninja/2016/5/24/powershell-calculating-folder-sizes

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

Предупреждение: тема слишком широкая, чтобы ее можно было кратко объяснить. Те, кому это интересно, просматривают всю папку 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. Многое другое...

Другие вопросы по тегам