6 votes

Pourquoi ne puis-je pas modifier la mémoire BCD du système via regedit ?

Ainsi, comme vous le savez probablement, le répertoire de stockage du registre HKEY_LOCAL_MACHINE\BCD00000000 est en fait la mémoire BCD du système ; c'est la même information que vous voyez lorsque vous exécutez la commande BCDEDIT (en tant qu'administrateur).

Cependant, si j'essaie d'exécuter regedit en tant qu'administrateur et de modifier manuellement l'une des valeurs qui s'y trouvent, j'obtiens l'erreur suivante Cannot edit <value_name>: Error writing the value's new contents . De même, si la fonction de l'API Windows RegSetValueEx tente de modifier les valeurs de cette sous-clé, même lorsqu'il s'agit d'une application fonctionnant en tant qu'administrateur, l'opération échouera également.

Pourtant, le BCDEDIT La commande peut insérer, mettre à jour et supprimer des éléments de ce magasin sans problème et les modifications apparaîtront également dans le registre.

Quelle est la différence entre ce que BCDEDIT et de modifier manuellement le registre ?

6voto

Ben Collins Points 11318

En un mot : les autorisations.

Pour plus de détails

Localisation

Le BCD est stocké sur le disque de démarrage (généralement un volume NTFS de ~100 Mo). Il est caché par défaut, mais vous pouvez lui attribuer une lettre de lecteur à l'aide du snap-in MMC de gestion des disques ( diskmgmt.msc ). Vous pouvez ensuite consulter la rubrique Boot et voir le fichier BCD qui est un fichier ordinaire au format "ruche de registre" contenant les données de configuration du démarrage.

Raison d'être

Il est évident que les données de démarrage sont très sensibles et constituent la première ligne de défaillance. Il est relativement facile de remédier à une erreur dans les fichiers système, mais il faut pour cela quelque chose à courir pour effectuer les réparations. Si les fichiers de démarrage sont abîmés, rien ne fonctionnera et c'est l'extinction des feux. (Il est toujours possible de réparer, mais pas automatiquement ; il faudra une intervention manuelle délibérée, comme l'utilisation d'un disque de démarrage ou d'installation).

Les données de démarrage étant critiques, Windows ne facilite pas les manipulations à l'intérieur du registre. L'utilisation de l'éditeur de registre pour modifier directement les données de démarrage permettrait de définir des valeurs invalides ou contradictoires, d'ajouter des entrées invalides ou illégales, de supprimer des entrées obligatoires, etc. Limiter la modification du BCD à bcdedit permet de limiter les modifications à des valeurs valides, ce qui contribue à limiter les dommages qui peuvent être causés (cela n'élimine pas complètement les problèmes ; il est toujours possible de tuer un système, mais au moins cela élimine une grande partie des problèmes possibles).

Méthode

Si vous examinez les permissions du fichier BCD00000000 vous verrez qu'il a Full Control défini pour le compte SYSTEM, mais le groupe des administrateurs a Special qui est simplement Read-Only plus WriteDac qui permet de définir des autorisations. (Il se peut que vous deviez cliquer sur le bouton [Advanced] parce que la boîte de dialogue de base indique que le SYSTÈME a Special également, mais l'accès à la Paramètres de sécurité avancés La boîte de dialogue montre qu'il est correctement réglé sur Full Control .)

Lorsque vous exécutez Regedit (qui nécessite des privilèges élevés), il s'exécute dans le contexte de votre compte d'utilisateur et bénéficie des autorisations du groupe d'administrateurs, de sorte que vous ne pouvez pas y écrire. Lorsque vous utilisez l'option bcdedit elle s'exécute sous le contexte du compte SYSTEM qui dispose des droits d'écriture. Si vous activez la commande Nom de l'utilisateur dans le Gestionnaire des tâches, vous pouvez voir que Regedit est exécuté par votre compte d'utilisateur et qu'il n'est pas exécuté par un autre compte. bcdedit est géré par le SYSTÈME.

Solutions de rechange

Il est déconseillé d'éditer directement le BCD avec Regedit et rarement nécessaire, mais si vous devez vraiment le faire, une solution consiste à vous accorder un accès en écriture au fichier BCD00000000 branche. Bien entendu, cette méthode n'est pas recommandée, car il faut se rappeler de révoquer l'autorisation ultérieurement. Un moyen plus simple est de simplement exécuter Regedit dans le contexte SYSTEM .

2voto

insipid Points 1510

Les solutions de contournement proposées par @Synetech sont bonnes. En particulier, celle qui concerne le système des runas. Mais je voudrais suggérer un moyen simple d'éditer.

  1. Décharger BCD00000000 ruche. Vous pouvez le faire, car il n'est nécessaire que pendant le démarrage. (Sélectionnez-le -> Fichier -> Décharger le répertoire de stockage...)
  2. Chargement du fichier BCD à partir du disque en tant que répertoire de stockage. (Si vous ne trouvez pas ce fichier, assigner une lettre de lecteur au volume. )
  3. Modifiez-le simplement.

Il n'est même pas nécessaire de le recharger. Cependant, il est recommandé de faire une copie de sauvegarde du fichier BCD et de redémarrer après les modifications.

1voto

kreemoweet Points 4301

Utilisez Regedit pour vérifier les autorisations. Remarquez que, par défaut, les administrateurs n'ont pas n'ont pas d'accès en écriture à cette clé ou à ses sous-clés. Il semblerait que les administrateurs aient l'autorisation de modifier le DAC, c'est-à-dire les permissions, vous pouvez donc essayer cela.

1voto

snayob Points 4278

Il n'est pas conseillé de modifier directement la branche BCD00000000 à l'aide d'un éditeur de registre.

Sous cette branche, vous avez une copie du "System BCD" qui est un fichier système protégé.

Le système maintient la synchronisation entre le fichier "System BCD" et la branche BCD00000000 du registre.

Le BCD possède une certaine structure - une collection d'objets, où chaque objet possède à nouveau sa structure (liste d'éléments).

La plupart des éléments sont de simples chaînes de caractères ou des nombres (entiers, hexadécimaux). Mais certains entiers sont des énumérations et dépendent du contexte ( !).

Certains éléments peuvent être à nouveau des objets à la structure complexe, comme les éléments d'un périphérique VHD par exemple.

Pour éditer chaque élément ou objet de BCD, vous pouvez utiliser l'outil en ligne de commande "bcdedit" ou vous pouvez utiliser "Editeur visuel BCD" - un éditeur BCD GUI complet.

Visual BCD Editor utilise l'interface BCD WMI Provider Interface pour l'accès BCD (une API pour l'accès BCD).

Sur les systèmes UEFI, les choses sont encore plus complexes - le BCD reflète également une partie de la NVRAM - nous avons donc une synchronisation de trois "lieux" :

  1. NVRAM (en partie)

  2. BCD sur la partition du système EFI

  3. HKLM \BCD00000000 branche du registre

La documentation de Microsoft indique qu'il n'y a que deux façons "légales" de modifier le BCD :

  1. utiliser bcdedit (par le biais de commandes simples ou de scripts)

  2. en utilisant l'interface BCD WMI Provider (méthode programmatique d'édition)

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