how to find MyMusic Folder from other users?

故事扮演 提交于 2019-12-29 08:17:18

问题


how to find MyMusic Folder of other users ?


回答1:


If the account you are running the program on has administrative privlieges, can't you just navigate to c:\Users\<UserName>\Music(which is the path on Windows7).
If you're looking for folders of users on another machine, then that is more difficult.

EDIT: It appears that there is a way to do this, from MSDN:

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

With the rfid being the KNOWNFOLDERID of the folder you are looking for in the case of My Music:

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



回答2:


You can use the Environment.SpecialFolder enum along with Environment.GetFolderPath to get access to "special" user folders, like so:

Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);



回答3:


The documented way to do this is to use SHGetFolderLocation and the hToken parameter, the problem is that you need the username and password to call LogonUser (You could also call WTSQueryUserToken if you are running as a service, but that limits you to the currently active sessions)

Now you are left with using undocumented stuff:

  1. Find the profile: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList (%windir%\Profiles on Win9x)
  2. AdjustTokenPrivileges for SE_RESTORE_NAME
  3. RegLoadKey NTUSER.DAT (USER.DAT on 9x)
  4. Query HKEY_USERS\{SIDYOUGOTFROMPROFILELIST}\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

Note: You need to be admin to do this and it only works for local accounts.



来源:https://stackoverflow.com/questions/3493607/how-to-find-mymusic-folder-from-other-users

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!