Библиотеки Windows на самом деле являются просто xml
файлами, которые определяют, как отображать коллекцию папок. Они отображаются с использованием специального расширения оболочки, встроенного в Windows. Поскольку они не являются настоящими папками, к файлам и подпапкам нельзя получить доступ напрямую через путь.
В открытом окне проводника вы можете ввести в адресной строке:
libraries\music
Это не похоже на работу из поля « File Name
диалогов открытия / сохранения. Это также не работает с командой run
.
Что вы можете с этим поделать:
В Windows Vista появилась концепция « Известные папки ». Он заменяет более старую методологию "постоянный список специальных элементов" (CSIDL), использовавшуюся в XP. В блоге Windows есть отличный пост ; он обсуждает это изменение и предоставляет обзор структуры файла *.library-ms
.
Известные папки имеют идентификаторы GUID. Чтобы получить к ним доступ через командную строку, добавьте префикс URI к известной knownfolder:
Есть десятки определены. Например, чтобы получить доступ к папке « Music
» текущего пользователя, run
следующую команду:
knownfolder:{4BD8D571-6D19-48D3-BE97-422220080E43}
Это приведет вас к заранее определенной музыкальной папке по умолчанию . Так что, если вы изменили папку библиотеки, это, к сожалению, не будет работать.
К папке по умолчанию библиотеки можно получить программный доступ с помощью интерфейса IShellLibrary , но это выходит за рамки моего первоначального вопроса. Похоже, что лучший подход заключается в:
- Вручную сопоставьте переменные среды с их известным путем
- Или вручную сопоставьте переменные среды, используя их GUID. Преимущество здесь в том, что вы делаете его системной переменной и работаете для всех пользователей).