如何从其他用户找到MyMusic Folder?

如何找到其他用户的MyMusic文件夹?

如果您运行该程序的帐户具有管理权限,则无法导航到c:\Users\\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 

您可以使用Environment.SpecialFolder枚举和Environment.GetFolderPath来访问“特殊”用户文件夹,如下所示:

 Environment.GetFolderPath(Environment.SpecialFolder.MyMusic); 

记录的方法是使用SHGetFolderLocation和hToken参数,问题是您需要用户名和密码来调用LogonUser(如果您作为服务运行,也可以调用WTSQueryUserToken ,但这限制了您当前活动会议)

现在你还没有使用未记录的东西 :

  1. 查找个人资料: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList (Win9x上的%windir%\ Profiles)
  2. SE_RESTORE_NAME AdjustTokenPrivileges
  3. RegLoadKey NTUSER.DAT(9x上的USER.DAT)
  4. 查询HKEY_USERS\{SIDYOUGOTFROMPROFILELIST}\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

注意:您需要成为管理员才能执行此操作,它仅适用于本地帐户。