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. AdjustTokenPrivileges 为SE_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 回答