Questão Qual é a função de pontos de interrogação nos caminhos do sistema de arquivos no registro do Windows?


Trata-se do registro em um Windows 7 Home Premium de 64 bits (o computador do meu amigo). Eu estava indo para definir o sistema para limpar o arquivo de paginação no desligamento, definindo o valor REG_DWORD ClearPageFileAtShutdown dentro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management para "1".

A minha pergunta é, no entanto, sobre as marcas de perguntas nos valores ExistingPageFiles e PagingFiles neste local do registro.

Os pontos de interrogação são mostrados na imagem abaixo.

question marks used in registry values

As perguntas que eu queria fazer são:

  1. Os caminhos usados ​​nesses valores devem ter pontos de interrogação no início?
  2. Que função esses pontos de interrogação servem?

2


origem


postagem no fórum - TOOGAM


Respostas:


Caminhos de dois pontos de interrogação são Nomes de Objetos do Gerenciador de Objetos NT. O Gerenciador de objetos é um sistema que organiza vários tipos diferentes de recursos do sistema (por exemplo, dispositivos, seções de memória, estações de janela, eventos) em uma estrutura semelhante a uma árvore. Você pode explorar essa árvore com o WinObj ferramenta.

o \??\ O conteúdo do pseudo-diretório pode ser visto no GLOBAL?? seção de WinObj. Existem outras sub-árvores, como Device. Na verdade, todos os itens em \??\ é um link simbólico - um atalho ou alias - para um objeto em outro lugar. \??\C: é (no meu sistema) um link para \Device\HarddiskVolume4, e o restante do caminho mostrado na captura de tela é um caminho sob a raiz desse volume. Cada letra da unidade aparece como um link simbólico para o volume em que está. Você pode encontrar outros tipos de dispositivos que são familiares, como CON e NUL.

Nota: Você não pode usar esses tipos de caminhos para acessar arquivos ou diretórios na maioria dos aplicativos. Apenas determinados componentes do sistema de baixo nível são projetados para trabalhar com caminhos do Gerenciador de objetos.

Isso explica sua captura de tela ExistingPageFiles, mas não PagingFiles. PagingFiles contém suas configurações de memória virtual com caminhos para arquivos de paginação expressos como caminhos normais. Se o seu sistema estiver configurado para gerenciar todas as configurações de memória virtual sozinho, essa entrada não especificará uma letra de unidade (somente um nome de arquivo e caminho). ? é apenas um espaço reservado para a unidade em que o arquivo de página termina.

Em resumo, sim, esses pontos de interrogação devem estar lá.

Leitura adicional: Gerenciador de objetos dentro do NT, Gerenciador de objetos (Windows)

Vídeo: Gerenciador de objetos do NT no canal 9 da Microsoft


6





Eu pareço lembrar ao usar consultas de arquivo CMD do DOS, um ponto de interrogação significa curinga de caractere único. O ponto de interrogação duplo para o qual não tenho a menor ideia, a menos que isso signifique simplesmente uma parte de um caminho com 2 caracteres curinga sequenciais. Espero que isto ajude.

i.e.?: poderia ser C: ou D: ao contrário de \ d * \, o que significa d caracterizar com qualquer número e tipo de letras ou números seguindo, e. \ dr \ or \ d2165thingy \

Tentando ser útil, uma vez que a notação?: Se referiria a qualquer unidade reconhecida no momento em que o comando foi executado no DOS 3 em diante, na minha experiência.


0



Infelizmente, não acredito que esta informação seja a resposta correta para a pergunta. A interpretação do? vai depender de qual chave do registro está sendo usada, e eu não acho que se destina a se referir ao padrão comum "linha de comando" de um único caractere. por exemplo, o DOS não suporta "?:" para significar "qualquer unidade". - TOOGAM
No PagingFiles entrada, o ? indica que o arquivo de paginação não está vinculado a uma unidade específica (ou seja, toda a memória virtual é configurada automaticamente pelo sistema). o \??\ caminho, no entanto, é um nome de objeto NT Object Manager. - Ben N


Eu vi o \?\C:\... path muito usado para obter acesso a arquivos / caminhos com mais de 260 caracteres. Pelo menos quando lidando com chamadas de API do Win32. Embora a estrutura na sua captura de tela varie um pouco, eu me sentiria seguro supondo que ela seja semelhante no comportamento. Ou, também pode ser que a API do Win32 (ao ler valores dessa chave do Registro) substitua automaticamente essas 'variáveis' pelos valores apropriados.

Nomeando arquivos, caminhos e namespaces (no MSDN)

A API do Windows tem muitas funções que também têm versões Unicode para permitir um caminho de comprimento estendido para um comprimento total máximo do caminho de 32.767 caracteres. Esse tipo de caminho é composto de componentes separados por barras invertidas, cada um com o valor retornado no parâmetro lpMaximumComponentLength da função GetVolumeInformation (esse valor geralmente é de 255 caracteres). Para especificar um caminho de comprimento estendido, use o "\\?\"prefixo. Por exemplo,"\\?\D:\very long path".


0



Você está certo nisso \\?\ caminhos (com um ponto de interrogação) são de fato caminhos literais de comprimento estendido. este \??\ caminho, no entanto, tem dois pontos de interrogação e é um tipo diferente de caminho - um nome de objeto do Gerenciador de objetos NT, especificamente. - Ben N