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