Откуда 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
файл.
Это открывает
HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
ключ реестра сRegOpenKeyExW()
и перечисляет все разделы реестра в нем.ProfileImagePath
значение реестра обеспечивает%UserProfile%
Путь к папке.С этого пути,
FindFirstFileW()
получает последнее измененное время и дату.Sid
обеспечивает Security IDentifier. Каждый зарегистрированный пользователь имеет свой уникальный SID. Из этого значения SID,LookupAccountSidW()
предоставляет имя пользователя, имя домена и т. д.Многое другое...