2

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

Мой вопрос, однако, о знаках вопроса в значениях ExistingPageFiles и PagingFiles в этом месте реестра.

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

вопросительные знаки, используемые в значениях реестра

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

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

3 ответа3

7

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

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

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

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

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

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

Видео: NT Object Manager на 9 канале Microsoft

0

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

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

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

0

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

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

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

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