【问题标题】:how to find MyMusic Folder from other users?如何从其他用户那里找到 MyMusic 文件夹?
【发布时间】:2010-08-16 13:34:04
【问题描述】:

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

【问题讨论】:

  • 哪个操作系统? users 文件夹在 Windows 7 和 XP 上位于不同的位置。
  • @ChrisF 从对我的问题的回答来看,看起来他正在寻找一种与版本无关的方法,这对于 windows api 来说有点糟糕。
  • @ChrisF *回应我的回答,而不是我的问题。

标签: c# winapi special-folders


【解决方案1】:

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

Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);

【讨论】:

  • 抱歉,我不确定“其他用户”是指“我以外的用户”(即运行应用程序的人,还是“访问应用程序的用户以外的用户”。
【解决方案2】:

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

现在你可以使用undocumented stuff:

  1. 查找配置文件:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList(Win9x 上的%windir%\Profiles)
  2. 调整SE_RESTORE_NAME 的TokenPrivileges
  3. RegLoadKey NTUSER.DAT(9x 上的 USER.DAT)
  4. 查询HKEY_USERS\{SIDYOUGOTFROMPROFILELIST}\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 可能是我不使用 Windows 7 或用户更改了 MusicFolder 路径。
    • 那么,这是一个比此解决方案允许的更棘手的问题,但这是默认路径。
    • @pedram,试试这个新功能
    • 这个答案假定默认文件夹是正确的。用户的个人资料不必驻留在C:\Users 上。答案的其余部分提供了一个 MSDN 链接和一个来自 kernel32.dll 的函数,但没有办法使用它。是的,MSDN 站点有文档,但是它引用了其他几个函数并且没有提供完整的可行解决方案,尤其是在 C# 中。因为这个答案非常不完整,所以我不赞成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2021-11-27
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多