Вопрос: Какова функция вопросительных знаков в путях файловой системы в реестре Windows?


Речь идет о реестре на 64-битной Windows 7 Home Premium (компьютер моего друга). Я собирался настроить систему на очистку файла подкачки при выключении, установив значение REG_DWORD ClearPageFileAtShutdown в HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management до "1".

Однако мой вопрос касается вопросительных знаков в значениях ExistingPageFiles а также PagingFiles в этом месте реестра.

Значки вопросов показаны на рисунке ниже.

question marks used in registry values

Вопросы, которые я хотел задать, следующие:

  1. Являются ли пути, используемые в этих значениях, иметь метки вопросов в начале?
  2. Какую функцию выполняют эти вопросительные знаки?

2
2018-04-23 23:30


Источник


сообщение форума - TOOGAM


Ответы:


Двузначные метки Имена объектов Object Object NT, Диспетчер объектов - это система, которая организует множество различных системных ресурсов (например, устройств, разделов памяти, оконных станций, событий) в одну древовидную структуру. Вы можете изучить это дерево с помощью WinObj инструмент.

\??\ Содержание псевдо-каталога можно увидеть в GLOBAL?? раздел WinObj. Существуют и другие поддеревья, например Device, Фактически, каждый отдельный элемент в \??\ это символическая ссылка - ярлык или псевдоним - к объекту в другом месте. \??\C: есть (в моей системе) ссылка на \Device\HarddiskVolume4, а остальная часть пути, показанная на скриншоте, - это путь под корнем этого тома. Каждая буква диска отображается там как символическая ссылка на том, что он включен. Вы можете найти другие типы устройств, которые знакомы, например CON а также NUL,

Примечание. Вы не можете использовать эти типы путей для доступа к файлам или каталогам в большинстве приложений. Только определенные низкоуровневые системные компоненты предназначены для работы с путями Object Manager.

Это объясняет ваш скриншот ExistingPageFiles, но нет PagingFiles, PagingFiles содержит ваши настройки виртуальной памяти с путями к файлам подкачки, выраженным в виде обычных путей. Если ваша система настроена на управление всеми параметрами виртуальной памяти сама по себе, эта запись не указывает букву диска (только имя файла и путь), поэтому ? просто заполнитель для любого диска, в котором находится файл страницы.

Итак, да, эти вопросительные знаки должны быть там.

Дальнейшее чтение: Внутренний диспетчер объектов NT, Диспетчер объектов (Windows)

Видео: Диспетчер объектов NT на канале Microsoft 9


6
2017-07-04 16:25





Я, кажется, помню при использовании DOS cmd-файлов, вопросительный знак означает односимвольный шаблон. Двойной знак вопроса, к которому я не согласен, если он просто не означает часть пути с двумя последовательными подстановочными символами. Надеюсь это поможет.

то есть?: может быть C: или D: в отличие от \ d * \, что означает d char с любым числом и типом букв или цифр, например, например. \ dr \ or \ d2165thingy \

Попытка быть полезной, поскольку обозначение?: Будет ссылаться на любой диск, признанный во время выполнения команды в DOS 3, по моему опыту.


0
2018-04-24 03:31



К сожалению, я не верю, что эта информация является правильным ответом на вопрос. Интерпретация? будет зависеть от того, какой ключ реестра используется, и я не думаю, что он предназначен для обозначения стандартного «командной строки» стандарта одного символа. например, DOS не поддерживает «?: \» означает «любой диск». - TOOGAM
в PagingFiles въезд, ? указывает, что файл подкачки не привязан к определенному диску (т. е. вся виртуальная память автоматически настраивается системой). \??\ путь, однако, является именем объекта NT Object Manager. - Ben N


Я видел \?\C:\... путь использовал много, чтобы получить доступ к файлам / дорожкам длиной более 260 символов. По крайней мере, имея дело с вызовами Win32 API. Хотя структура на вашем скриншоте немного меняется, я бы чувствовал себя в безопасности, полагая, что она похожа на поведение. Или также может быть, что Win32 API (при чтении значений из этого ключа реестра) автоматически заменит эти «переменные» на соответствующие значения.

Именование файлов, путей и пространств имен (в MSDN)

В API Windows есть много функций, которые также имеют версии Unicode, чтобы разрешить длину расширенной длины для максимальной длины пути 32 767 символов. Этот тип пути состоит из компонентов, разделенных обратными косыми чертами, каждый до значения, возвращаемого параметром lpMaximumComponentLength функции GetVolumeInformation (это значение обычно составляет 255 символов). Чтобы указать путь расширенной длины, используйте команду "\\?\Префикс. Например, "\\?\D:\very long path».


0
2017-07-04 15:42



Вы правы в этом \\?\ пути (с одним вопросительным знаком) действительно являются буквальными путями протяженной длины. Эта \??\ путь, однако, имеет две вопросительные знаки и представляет собой другой вид пути - имя объекта Object Object NT, в частности. - Ben N