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

警告:トピックは広範すぎるため、短いQ&Aで説明するのは困難です。興味のある方は、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. 他にもたくさんあります...

関連情報