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 方法感兴趣,请参阅以下链接。这将详细说明如何使用文件夹大小模块,然后您只需添加文件夹名称即可进行识别。一种可以为您获取此信息的现成产品称为“spacesniffer” - 再次在您的 c:\users 上运行它,它将为您提供一个显示每个配置文件不同形状大小的图表,您甚至可以根据需要将其导出到文件中。

编辑:忘记链接https://www.gngrninja.com/script-ninja/2016/5/24/powershell-calculating-folder-sizes

空间嗅探器: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提供安全标识符。每个注册用户都有自己独特的 SID。从该 SID 值中,LookupAccountSidW()提供用户名、域名等。

  5. 还有很多...

相关内容