6 votes

Quelle est la fonction des points d'interrogation dans les chemins des systèmes de fichiers dans le registre de Windows ?

Il s'agit du registre d'un Windows 7 Home Premium 64 bits (l'ordinateur de mon ami). J'allais configurer le système pour qu'il efface le fichier de page à l'arrêt en définissant la valeur REG_DWORD suivante ClearPageFileAtShutdown sur HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management à "1".

Ma question porte toutefois sur les points d'interrogation dans les valeurs. ExistingPageFiles y PagingFiles dans cet emplacement du registre.

Les points d'interrogation sont montrés dans l'image ci-dessous.

question marks used in registry values

Les questions que je voulais poser sont les suivantes :

  1. Les chemins utilisés dans ces valeurs sont-ils censés comporter des points d'interrogation ? au début ?
  2. Quelle est la fonction de ces points d'interrogation ?

12voto

Ben N Points 38070

Les chemins à double point d'interrogation sont Chemins d'accès au gestionnaire d'objets NT qui peut rechercher des périphériques de type DOS comme les lettres de lecteur. Le gestionnaire d'objets est un système qui organise de nombreux types différents de ressources système (par exemple, les périphériques, les sections de mémoire, les stations de fenêtre, les événements) dans une structure arborescente. Vous pouvez explorer cette arborescence avec la fonction WinObj outil.

Le site \?? regarde d'abord dans le répertoire du processus demandeur DosDevices mais si le processus ne dispose pas d'une définition spécifique pour le dispositif (ce qui est probablement le cas du composant responsable du fichier de page), la recherche s'effectue dans la table \GLOBAL?? Répertoire du gestionnaire d'objets. Son contenu peut être vu dans la fenêtre GLOBAL?? de WinObj. Il existe d'autres sous-arbres, comme Device . En fait, chaque élément de GLOBAL?? est un lien symbolique - un raccourci ou un alias - vers un objet situé ailleurs. \GLOBAL??\C: est (sur mon système) un lien vers \Device\HarddiskVolume4 et le reste du chemin indiqué dans votre capture d'écran est un chemin sous la racine de ce volume. Chaque lettre de lecteur y apparaît comme un lien symbolique vers le volume sur lequel elle se trouve. Vous trouverez peut-être d'autres types de périphériques qui vous sont familiers, tels que CON y NUL .

Remarque : Vous ne pouvez pas utiliser ce type de chemin pour accéder aux fichiers ou aux répertoires dans la plupart des applications. Seuls certains composants système de bas niveau sont conçus pour fonctionner avec les chemins du gestionnaire d'objets.

Cela explique les captures d'écran ExistingPageFiles mais pas PagingFiles . PagingFiles contient vos paramètres de mémoire virtuelle avec les chemins vers les fichiers de pagination exprimés comme des chemins normaux. Si votre système est configuré pour gérer lui-même tous les paramètres de mémoire virtuelle, cette entrée ne spécifie pas de lettre de lecteur (seulement un nom de fichier et un chemin d'accès). ? est juste un emplacement pour le lecteur sur lequel le fichier de la page est placé.

En résumé, oui, ces points d'interrogation sont censés être là.

Pour en savoir plus : Le gestionnaire d'objets de NT , Gestionnaire d'objets (Windows) , Le guide définitif de la conversion des chemins Win32 vers NT , Windows Internals Sixième édition Partie 1 page 174

Vidéo : Gestionnaire d'objets NT à la chaîne 9 de Microsoft

0voto

Prestaeus Points 9

Je crois me souvenir que lors de l'utilisation de requêtes DOS cmd, un point d'interrogation signifie un caractère de remplacement unique. Le double point d'interrogation me laisse perplexe, à moins qu'il ne signifie simplement une partie d'un chemin avec deux caractères génériques séquentiels. J'espère que cela vous aidera.

c'est-à-dire que ? : pourrait être C : ou D : à la différence de ? \d *\ ce qui signifie d char avec n'importe quel nombre et type de lettres ou de chiffres qui suivent, par ex. \dr\ ou \d2165thingy\

J'essaie d'être utile, car la notation ? : se réfère à n'importe quel lecteur reconnu au moment de l'exécution de la commande dans DOS 3 et plus, d'après mon expérience.

0voto

Megacan Points 1856

J'ai vu le \?\C:\... chemin très utilisé pour accéder à des fichiers/chemins de plus de 260 caractères. Du moins lorsqu'il s'agit d'appels d'API Win32. Bien que la structure de votre capture d'écran varie légèrement, je peux supposer que le comportement est similaire. Il se peut aussi que l'API Win32 (lorsqu'elle lit les valeurs de cette clé de registre) remplace automatiquement ces "variables" par les valeurs appropriées.

Nommer les fichiers, les chemins et les espaces de noms (sur MSDN)

L'API Windows dispose de nombreuses fonctions qui ont également des versions Unicode pour permettre un chemin de longueur étendue pour une longueur totale maximale de 32 767 caractères. Ce type de chemin est composé de composants séparés par des barres obliques inversées, chacun pouvant atteindre la valeur renvoyée dans le paramètre lpMaximumComponentLength de la fonction GetVolumeInformation (cette valeur est généralement de 255 caractères). Pour spécifier un chemin de longueur étendue, utilisez l'option " \\?\ préfixe ". Par exemple, " \\?\D:\very long path ".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X