Определяет ли Windows 7 переменные среды для уже существующих библиотек? Мне интересно, потому что я часто использую их при вводе пути в диалогах Открыть/Сохранить или в командной Run
строке. Например, чтобы попасть в каталог настроек Firefox текущего пользователя, run
:
%APPDATA%\Mozilla\Firefox
Это удобный ярлык, и я надеялся найти что-то похожее для путей к библиотекам. Например:
%LIBRARIES%\Music\
%MUSIC%\
Я понимаю, что библиотеки объединяют одну или несколько папок верхнего уровня, поэтому может быть неоднозначность. У Microsoft естьсписокпеременных среды, но большинство из них недоступны через пользовательский интерфейс Windows.Этот вопростакже ссылается на хороший список, но не включает папку пользователя Documents
, Music
папку и т. д.
решение1
Библиотеки 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}
Это приведет вас к предопределенномупо умолчаниюпапка с музыкой. Так что, если вы изменили папку библиотеки, это, к сожалению, не сработает.
Папка библиотеки по умолчанию может бытьдоступпрограммно с помощьюIShellLibraryinterface, но это выходит за рамки моего изначального вопроса. Кажется, что наилучшим подходом будет либо:
- Вручную сопоставьте переменные окружения с их известными путями
- Или вручную сопоставьте переменные окружения, используя их GUID. Преимущество здесь в том, что вы делаете это системной переменной и она работает для всех пользователей).
решение2
Если вы хотите %music%
указать папку с музыкой, то просто добавьте новую переменную окружения в свою систему.
Если вы хотите %Libraries%
указать на свои библиотеки, то создайте ярлык c:\
, например, на , а затем создайте новую переменную окружения, указывающую на ваш c:\libraries
ярлык. (но прямой вход в подпапки работать не будет, но вы можете создать новую переменную для тех, которые находятся в библиотеках)
Затем вы можете вызвать их оба из run с помощью %music%
или%Libraries%