1

他のユーザーの MyMusic フォルダを見つける方法は?

4

3 に答える 3

5

Environment.SpecialFolder次のように、列挙型を使用しEnvironment.GetFolderPathて「特別な」ユーザー フォルダーにアクセスできます。

Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
于 2010-08-16T13:35:57.697 に答える
1

これを行う文書化された方法は、SHGetFolderLocationと hToken パラメーターを使用することです。問題は、LogonUser を呼び出すためにユーザー名とパスワードが必要なことです (サービスとして実行している場合はWTSQueryUserTokenを呼び出すこともできますが、現在アクティブなセッション)

これで、文書化されていないものを使用することになります:

  1. プロファイルを見つけます: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList(Win9x では %windir%\Profiles)
  2. のAdjustTokenPrivilegesSE_RESTORE_NAME
  3. RegLoadKey NTUSER.DAT (9x では USER.DAT)
  4. クエリHKEY_USERS\{SIDYOUGOTFROMPROFILELIST}\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

注: これを行うには管理者である必要があり、ローカル アカウントに対してのみ機能します。

于 2010-08-16T15:34:00.583 に答える
-1

プログラムを実行しているアカウントに管理者権限がある場合c:\Users\<UserName>\Musicは、(Windows7のパスである)に移動するだけでは不十分です。
別のマシンでユーザーのフォルダーを探している場合、それはより困難です。

編集:MSDNから 、これを行う方法があるようです:

HRESULT SHGetKnownFolderPath(
  __in   REFKNOWNFOLDERID rfid,
  __in   DWORD dwFlags,
  __in   HANDLE hToken,
  __out  PWSTR *ppszPath
);

rfidが、マイミュージックの場合に探しているフォルダのKNOWNFOLDERIDである場合:

GUID{2112AB0A-C86A-4FFE-A368-0DE96E47012E}
Display NameMusicFolder 
Type PERUSER
Default Path: %APPDATA%\Microsoft\Windows\Libraries\Music.library-msCSIDL 
Equivalent None, new in Windows 7
Legacy Display Name Not applicable
Legacy Default Path Not applicable
于 2010-08-16T13:45:19.187 に答える