
このコマンドを実行すると、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
警告:トピックは広範すぎるため、短いQ&Aで説明するのは困難です。興味のある方は、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()
ユーザー名、ドメイン名などが提供されます。他にもたくさんあります...