2

Windows 7 определяет переменные среды для уже существующих библиотек? Мне любопытно, потому что я часто использую их при вводе пути в диалоговых окнах Open/Save или из приглашения Run . Например, чтобы перейти в каталог настроек текущего пользователя Firefox, run:

%APPDATA%\Mozilla\Firefox

Это удобный ярлык, и я надеялся найти что-то похожее для путей к библиотекам. Например:

%LIBRARIES%\Music\
%MUSIC%\

Я понимаю, что библиотеки объединяют одну или несколько папок верхнего уровня, поэтому может возникнуть неоднозначность. У Microsoft есть список переменных среды, но большинство из них недоступны через пользовательский интерфейс Windows. Этот вопрос также связан с красивым списком, но не включает папку « Documents » пользователя, папку « Music » и т.д.

2 ответа2

5

Библиотеки 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 , но это выходит за рамки моего первоначального вопроса. Похоже, что лучший подход заключается в:

  1. Вручную сопоставьте переменные среды с их известным путем
  2. Или вручную сопоставьте переменные среды, используя их GUID. Преимущество здесь в том, что вы делаете его системной переменной и работаете для всех пользователей).
3

Если вы хотите, чтобы %music% указывал на вашу музыкальную папку, вы просто добавляете новую переменную среды в вашу систему.

Если вы хотите, чтобы %Libraries% указывал на ваши библиотеки, сделайте, например, ярлык на c:\ , а затем создайте новую переменную среды, указывающую на ярлык c:\libraries . (но ввод непосредственно в подпапки не будет работать, но вы можете создать новую переменную для тех, которые находятся в библиотеках)

Затем вы можете вызывать их обоих из запуска с %music% или %Libraries%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .