2010-08-16 47 views
1

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

+0

哪个操作系统?用户文件夹位于Windows 7和XP的不同位置。 – ChrisF 2010-08-16 13:47:40

+0

@ChrisF根据对我的问题的回答来判断,看起来他正在寻找一个版本无关的方法来做到这一点,它与windows api有点吸引。 – James 2010-08-16 14:07:46

+0

@ChrisF *回应我的回答,不是我的问题。 – James 2010-08-16 14:15:44

回答

-1

如果你正在运行的程序的帐户具有管理privlieges,你不能只需导航到c:\Users\<UserName>\Music(这是Windows7上的路径)。
如果您正在寻找另一台机器上的用户文件夹,那就更困难了。

编辑: 看来,有一种方法可以做到这一点,from 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 
+0

可能是我不使用Windows 7或用户已更改MusicFolder路径 – pedram 2010-08-16 13:47:53

+0

然后,这是一个棘手的问题 – James 2010-08-16 14:01:44

+0

@pedram,试试这个新功能 – James 2010-08-16 14:51:47

5

您可以使用Environment.SpecialFolder枚举与Environment.GetFolderPath一起以访问“特殊”用户文件夹,就像这样:

Environment.GetFolderPath(Environment.SpecialFolder.MyMusic); 
+0

请完整阅读我的问题:'其他用户' – pedram 2010-08-16 13:41:32

+0

对不起,我不确定是否“其他用户”提到到“除我以外的用户”(即运行应用程序的用户,或“用户访问应用程序以外的用户”) – 2010-08-16 13:56:32

1

的记录方式做,这是使用SHGetFolderLocation和hToken参数,问题是你所需要的用户名和密码来调用LogonUser(你凑LD也呼吁WTSQueryUserToken如果你正在运行作为一种服务,但限制你当前活动的会话)

现在你只剩下使用undocumented stuff

  1. 找到配置文件:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList(%WINDIR%\在Win9x型材)
  2. AdjustTokenPrivileges为SE_RESTORE_NAME
  3. RegLoadKey NTUSER.DAT上9X(USER.DAT)
  4. 查询HKEY_USERS\{SIDYOUGOTFROMPROFILELIST}\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

注意:您必须是管理员才能执行此操作,并且仅适用于本地帐户。

相关问题