如何找到其他用户的 MyMusic 文件夹?
问问题
1880 次
3 回答
5
您可以使用Environment.SpecialFolder
枚举Environment.GetFolderPath
来访问“特殊”用户文件夹,如下所示:
Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
于 2010-08-16T13:35:57.697 回答
1
记录在案的方法是使用SHGetFolderLocation和 hToken 参数,问题是您需要用户名和密码才能调用 LogonUser (如果您作为服务运行,您也可以调用WTSQueryUserToken ,但这会将您限制为当前活动会话)
现在你只剩下使用无证的东西了:
- 查找配置文件:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
(Win9x 上的%windir%\Profiles) - AdjustTokenPrivileges 为
SE_RESTORE_NAME
- RegLoadKey NTUSER.DAT(9x 上的 USER.DAT)
- 询问
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 回答