Получить все каталоги в библиотеке проводника

Как я могу получить все места в библиотеке, добавленные в "Моя музыка"?

В этом примере я добавил эти каталоги в библиотеку:

E:\My Music
E:\Mp3

Я пробовал:

Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);

Но он возвращает:

C:\Users\MyUser\Music

Ответ 1

Любые библиотеки, добавленные в Media Player, должны заканчиваться в каталоге AppData.

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Windows\Libraries\Music.library-ms"

Возможно, это поможет.

Ответ 3

Я сделал что-то подобное, и разместил полное решение с кодом, использующим Windows Code Code Pack, в этом другом вопросе StackOverflow. В вашем случае вы найдете код, который говорит:

        ICollection<IKnownFolder> allSpecialFolders = Microsoft.WindowsAPICodePack.Shell.KnownFolders.All;

И затем перебирайте эти папки, чтобы найти тот, который соответствует вашим потребностям:

    string fpath = "";
    // Iterate over each folder and find the one we want
    foreach ( var folder in allSpecialFolders )
    {
        if ( folder.ParsingName == foldername )
        {
            // We now have access to the xml path
            fpath = folder.Path;
        }
    }

    if ( fpath == "" )
        return null;

    var intFolders = GetLibraryInternalFolders(fpath);

    return intFolders.Folders.ToList();

И затем используйте функцию GetLibraryInternalFolders(), чтобы вернуть в нее несколько папок. В любом случае, проверьте мой полный код решения по другому вопросу.