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

发布于 2024-09-14 08:54:48 字数 27 浏览 7 评论 0原文

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

how to find MyMusic Folder of other users ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无妨# 2024-09-21 08:54:49

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

Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);

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);
携君以终年 2024-09-21 08:54:49

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

现在您只能使用 未记录的内容

  1. 查找配置文件: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. 查询HKEY_USERS\{SIDYOUGOTFROMPROFILELIST}\Software\Microsoft\Windows\CurrentVersion\ Explorer\User Shell 文件夹

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

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.

暖心男生 2024-09-21 08:54:49

如果您运行程序的帐户具有管理权限,您不能直接导航到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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文