Omlouvám se za vstup, ale jelikož se tento problém objevuje docela často, třeba bude malé osvětlení k užitku.
MBR sektor (první sektor na disku-LBA 0) obsahuje zaváděcí kód, pár hodnot a tabulku rozdělení disku (partition table). Mezi zaváděcím kódem a tabulkou rozdělení disku je uložena hodnota, která se nazývá DiskID (disk identifier, NT disk serial number) zapsaná do MBR spolu s ostatním při instalaci Windows.
Při prvním připojení disku k systému, se z této hodnoty a čísel sektorů, kde začínají diskové oddíly (vynásobený dvěma) vytvoří pro každý oddíl hodnota VolumeID.
Správce připojení (mountmgr.sys) zjistí, že v klíči registru HKEY_LOCAL_MACHINE\System\MountedDevices ještě není VolumeID uložena (ještě s oddílem, kterému VolumeID patří neměl tu čest) uloží ho tam (\??\Volume{...} = 16 3d 17 3d 00 d8 45 5b 05 00 00 00), přiřadí mu nějaké písmeno a tuto informaci tam uloží též (např. \DosDevices\D: = 16 3d 17 3d 00 d8 45 5b 05 00 00 00).
Při příštím spuštění systém znovu z DiskID a čísla sektoru začátku oddílu vytvoří VolumeID, prohledá HKEY_LOCAL_MACHINE\System\MountedDevices, zjistí že už je tam toto VolumeID uloženo, a že má oddíl přiřazen písmeno D . A tak je to i s ostatními oddíly na tomto nebo i jiném disku.
Pokud nějaký program smaže DiskID, systém tam zapíše novou hodnotu, a při připojování svazku se znovu vytváří VolumeID.
Ta hodnota se ale bude lišit od předešlé hodnoty VolumeID, jelikož se vytvoří za pomoci nového DiskID.
Tím pádem není v registru nalezen záznam o propojení s nějakým písmenem a oddílu je znovu přiřazeno písmeno nové. Původní oddíl D: teď může být třeba F:
No a všechno co se odkazovalo na D: už nebude platné.
U Windows Vista a Windows 7 bude mít s tímto velký problém boot manager. Ten DiskID používá k identifikaci bootovacího oddílu (tedy oddílu, kde je nainstalován Windows), aby mohl předat řízení loaderu winload.exe, který pokračuje v zavádění systému.
Původní DiskID uložené v BCD souboru se nebude shodovat s novým a boot manager nebude moci nalézt bootovací oddíl(svazek)
Pak boot manager zobrazí chybové hlášení:
Soubor: /Windows/system32/winload.exe
Informace: Vybranou položku nelze načíst, protože aplikace chybí nebo je poškozená.
nebo
Vybranou položku nelze načíst, protože aplikace chybí nebo je poškozená
informace: výběr svazku se nezdařil protože k požadovanému zařízení nelze získat přístup
Předchozí verze Windows s tím nebudou mít při bootování až takový problém, jelikož loader ntldr převážně používá k identifikaci bootovacího oddílu zápis multi v ARC konvenci (známé "multi(0)disk(0)rdisk(0)partition(1)" z boot.ini)
Pokud bude ale použit zápis signature(x)disk(x)rdisk(x)partition(x), opět nastanou problémy, protože v tomto zápisu je opět použito DiskID.
a DiskID je mu lhostejné. K přeházení písmenek jednotek ale dojít může.
Nejjednodušší postup, jak zprovoznit systém, je nabootovat z instalačního média nebo z Recovery disku
http://cybernetnews.com/windows-7-recovery-disc/ a v příkazovém řádku spustit BOOTREC /RebuildBcd
(pokud nezabere automatická Oprava spouštění)
Přehozená písmenka ostatních jednotek pak nastavit ve Správci disků nebo přímo editací klíče
HKEY_LOCAL_MACHINE\System\MountedDevices
Jeden z programů, který DiskID maže je Bootkit Remover version 1.0.0.1 použitý s parametrem "fix".
Bootrec /fixmbr (Nástroj pro opravu spouštění z Vist a W7) by měl být při přepisu MBR v pohodě.