运行此命令rundll32 sysdm.cpl,EditUserProfiles
将显示“用户配置文件”窗口,其中显示有关该机器上存储的配置文件的详细信息。此屏幕的加载速度表明这些数据存储在本地某处,而不是动态生成的。
我想了解这些数据位于何处,以便可以通过编程方式检索Win32_UserProfile
这些数据,因为查询仅提供数据的一个子集,而且我专门在寻找配置文件大小,而不是手动计算它。
答案1
文件夹大小不会作为变量专门存储在任何地方,而是在您右键单击 ->“c:\users”配置文件文件夹上的属性时计算的。您需要的任何位置或子集数据都可以在注册表中的此项下找到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
如果您需要整理配置文件大小列表,最好查询“c:\users”。powershell 将是我的首选。另请注意,如果未启用漫游配置文件并且您未使用文件夹重定向策略,则“c:\users”位置将仅包含完整的配置文件,否则您需要查询它们存储的位置。
如果您对 powershell 方法感兴趣,请参阅以下链接。这将详细说明如何使用文件夹大小模块,然后您只需添加文件夹名称即可进行识别。一种可以为您获取此信息的现成产品称为“spacesniffer” - 再次在您的 c:\users 上运行它,它将为您提供一个显示每个配置文件不同形状大小的图表,您甚至可以根据需要将其导出到文件中。
编辑:忘记链接https://www.gngrninja.com/script-ninja/2016/5/24/powershell-calculating-folder-sizes
答案2
警告:这个话题太广泛了,无法在简短的问答中解释清楚。有兴趣的人可以通读全文sysdm 文件夹在 ReactOS 存储库中。
这里我总结了 Windows 10 中的流程。我从 文件BOOL EditUserProfiles(HWND hWndParent)
中的功能中获取详细信息。sysdm.cpl
它打开
HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
注册表项并RegOpenKeyExW()
枚举其中的所有子注册表项。ProfileImagePath
注册表值提供%UserProfile%
文件夹路径。从该路径
FindFirstFileW()
获取最后修改的时间和日期。Sid
提供安全标识符。每个注册用户都有自己独特的 SID。从该 SID 值中,LookupAccountSidW()
提供用户名、域名等。还有很多...