Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Partitionstabelle ändern (https://www.delphipraxis.net/136886-partitionstabelle-aendern.html)

WorstNightmare 9. Jul 2009 13:50


Partitionstabelle ändern
 
Hallo,

wie ich schon in einem anderen Thread sagte, möchte ich gerne die Partitionstabelle im MBR ändern. Folgende Dinge sollen geschehen:
  • Physikalisches Laufwerk (Festplatte) von Partition rausfinden (Fertig)
  • MBR von Platte auslesen (Fertig)
  • Partitionstabelle auslesen und parsen (halb fertig)
  • Womöglich Partition aus erweiterter Partition löschen
  • Neue primäre FAT32 (Typ 0xC) Partition anlegen

Die FAT32 Partition muss nur im MBR als solche stehen, was an der Position für Daten sind ist völlig egal, denn da kommt ein spezielles anderes Dateisystem hin.
Bevor ich diesen ganzen Aufwand betreibe, möchte ich erstmal folgendes wissen:
Lassen moderne Windows-Systeme (NT 6) zu, dass ich den MBR einfach mal so überschreibe? (Probleme mit Cache/Registry?)
Ist es egal ob es ein 32/64-Bit System ist?

Dazu muss noch gesagt werden, dass es sich um eine externe Festplatte handelt, also nicht die wo Windows drauf ist.

Fridolin Walther 9. Jul 2009 14:03

Re: Partitionstabelle ändern
 
Ja, das lassen die durchaus zu, vorrausgesetzt es gibt keine Ressourcen Konflikte. Sowohl unter x86 als auch unter allen anderen Systemen sollte es da aber keine Probleme geben. Allerdings muss Du das System danach dann auch dazu bringen den MBR neu einzulesen, was imho schwieriger ist als den MBR zu schreiben ;). Ich würde vermuten das es dazu notwendig wäre ein entsprechendes Signal an den Festplatten Treiber zu schicken. Aber das ist reine Spekulation meinerseits.

himitsu 9. Jul 2009 14:06

Re: Partitionstabelle ändern
 
ganz ehrlich, vergiß den Weg,
wenn schon, dann nimm ein anderen Marker für ein Dateisystem.

1. wenn du etwas als FAT32 ausgiebst, dann sollte es auch güliges FAT32 sein, denn
1.1. den FAT32-Treiber des Systems wird es nicht gefallen
1.2. CheckDisk könnte dir deine "andere" Nicht-FAT-Partition zerschießen
2. ...

Erstmal mußt du die Festplatte bei Windows abmelden/Sperren und erst dann
kannst du einfach direkt auf die Platte zugreifen und kannst den MBR direkt verändern.

WorstNightmare 9. Jul 2009 14:41

Re: Partitionstabelle ändern
 
Zitat:

Zitat von himitsu
ganz ehrlich, vergiß den Weg,
wenn schon, dann nimm ein anderen Marker für ein Dateisystem.

1. wenn du etwas als FAT32 ausgiebst, dann sollte es auch güliges FAT32 sein, denn
1.1. den FAT32-Treiber des Systems wird es nicht gefallen
1.2. CheckDisk könnte dir deine "andere" Nicht-FAT-Partition zerschießen
2. ...

Hm, ich denke das macht nichts. Dieses andere Dateisystem benutzen schon viele seit einiger Zeit, alle hatten keine Probleme, ich selbst auch nicht. Windows macht da keine Murren, sagt lediglich "Auf dem Datenträger befindet sich kein bekanntes Dateisystem, möglicherweise müssen sie ihn formatieren, bevor sie ihn benutzen können."

Zitat:

Zitat von himitsu
Erstmal mußt du die Festplatte bei Windows abmelden/Sperren und erst dann
kannst du einfach direkt auf die Platte zugreifen und kannst den MBR direkt verändern.

Ja genau, so macht es Acronis Disk Director auch. Gibt es Möglichkeiten sowas aus Delphi heraus zu veranlassen?

Fridolin Walther 9. Jul 2009 15:16

Re: Partitionstabelle ändern
 
Zitat:

Zitat von himitsu
Erstmal mußt du die Festplatte bei Windows abmelden/Sperren und erst dann
kannst du einfach direkt auf die Platte zugreifen und kannst den MBR direkt verändern.

Das ist beim Zugriff auf den MBR nicht notwendig.

himitsu 9. Jul 2009 15:54

Re: Partitionstabelle ändern
 
Wenn der MBR verändert werden soll schon.
Wenn er nur den Typ einer nicht gemappten Partition hätte ändern wollen, dann wäre es ver mutlich noch gut gegangen, aber wenn der den MBR umbauen will (z.B. eine Partition einfügen) und windows dieses Laufwerk auch zugänglich machen soll, dann muß er Windows auch die möglichkeit geben den MBR neu einzulesen.


schau mal in Luckies Diskimage (auf seiner Webseite), da wird zwar nur eine Partition (die der Diskette) gesperrt, aber evtl. findest du über diese Funktion im MSDN weitere/passendere Befehle.

Fridolin Walther 9. Jul 2009 16:10

Re: Partitionstabelle ändern
 
Zitat:

Zitat von himitsu
Wenn der MBR verändert werden soll schon.

Nein. Wenn es so wäre, wären MBR Killer kein Problem im Malware Bereich und auch MBR Rootkits wären ein weniger großes Problem. Du kannst problemlos den MBR des Bootlaufwerks lesen und schreiben vom Usermode aus ohne das das Laufwerk abgemeldet werden müsste. Kannst es gerne mal in ner VM testen.

WorstNightmare 9. Jul 2009 18:50

Re: Partitionstabelle ändern
 
Also ich mache mir da schon Sorgen...
Ich habe jetzt implementiert, dass wenn das Ziel-Laufwerk NTFS ist, im MBR hingeschrieben wird, dass es FAT32 ($C) ist. Windows scheint das sch***** egal zu sein, selbst nach einem Neustart kann ich das Volume noch ohne Probleme als NTFS Laufwerk benutzen.

Wenn ich jetzt aber Partitionen aus erweiterten lösche und dafür eins in der Partitionstabelle erstelle, dann MUSS ich Windows ja irgendwie mitteilen, dass ich da rumgestrickt habe, damit ein Laufwerksbuchstabe zugewiesen wird und ich dann drauf rumschreiben kann.

himitsu 9. Jul 2009 19:25

Re: Partitionstabelle ändern
 
ich sagte ja,
- Laufwerk abmelden und beim Anmelden wird der MBR neu eingelesen

bei NTFS hast du daß problem, daß selbst ohne daß es gemountet ist (kein Laufwerksbuchstabe und so)
einige Systemprozesse auf die Partition zugreifen.

und es kann passieren, daß windows einige werte zurückschreibt, wenn es beendet wird, drum wird das Laufwerk wohhl dann auch nach'm Neustart wieder geladen.

und ich weiß nicht wie die Fehlerbehebung in Windows diesbezüglich aussieht, aber nur weil der Marker in der MBR was anderes besagt, geben die Angaben im Partitionsbootrecord immernoch NTFS an.

Muetze1 9. Jul 2009 20:30

Re: Partitionstabelle ändern
 
Beachte bitte das es auch eine GUID Partitionstabelle gibt. Diese ist nicht kompatibel mit der alten Partitionstabelle. Es wird aber noch eine alte geschrieben als Dummy, welche einfach angibt die gesamte Platte belegt zu haben. (Wikiepedia: GUID Partition Table)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz