如何找到其他用户的MyMusic文件夹?
您可以将Environment.SpecialFolder
枚举与Environment.GetFolderPath
一起使用,以访问“特殊”用户文件夹,如下所示:
Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
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 :
HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList
(%windir%\\Profiles on Win9x) SE_RESTORE_NAME
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.
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.