Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Partitionsbezeichnung auslesen - Partitionstabelle (https://www.delphipraxis.net/111040-partitionsbezeichnung-auslesen-partitionstabelle.html)

RolfPolf 28. Mär 2008 13:56


Partitionsbezeichnung auslesen - Partitionstabelle
 
Hallo zusammen...

Mit der API-Funktion GetVolumeInformation aus der kernel32.dll gibt es ja die Möglichkeit, für ein Volume die Volumebezeichnung (Label) zu ermitteln, bspw für Laufwerk C "System". Dazu muss das Root-Verzeichnis des Volumes angegeben werden.

Jetzt möchte ich aber die Laufwerksbezeichnung für ein Volume abfragen, für welches ich kein Root-Verzeichnis angeben kann, da es sich um eine versteckte Partition handelt. Irgendwie muss das ja gehen, schließlich kann PartitionMagic oder so das ja auch.
Igendwo muss die Partitionsbezeichnung doch stehen, und ich hätte mal auf die Partitionstabelle getippt, aber darin finde ich keinen für Die Partitionsbezeichnung vorgesehenen Platz.

Hat jemand ne Idee wo ich die finde oder wie ich sie auslesen kann?

Danke!!!
Grüße,
Rolf!

Muetze1 28. Mär 2008 15:15

Re: Partitionsbezeichnung auslesen - Partitionstabelle
 
Die Bezeichnung ist entweder im entsprechenden Dateisystem hinterlegt oder halt im Bootsektor der Partition.

Grundlegend brauchst du nur dann Windows zu fragen, wenn er dir sowas ermitteln kann. Wenn es sich um eine versteckte Partition handelt, dann kannst du dich in der Datenträgerverwaltung umschauen und wirst feststellen, das Windows bei versteckten Partition auch keine Namen anzeigt. Von daher hast du da mit Windows Boardmitteln keine Chance.

Partition Magic greift direkt auf die Festplatten zu und ermittelt solche Dinge selber und umgeht die Windows Routinen dazu. Von daher ist das ein ganz anderer Ansatz. Du kannst nun gleiches machen, also die LowLevel WinAPI Funktionen nutzen um direkt auf die Datenebene auf die Datenträger zu zu greifen und die Partitionstabellen selber verarbeiten. Aber da hast du genug zu implementieren. Von daher: ist es dir wirklich so wichtig?

wido 28. Mär 2008 15:25

Re: Partitionsbezeichnung auslesen - Partitionstabelle
 
Die Daten stehen nicht in der Partitionstabelle. Genau genommen speichert jedes Dateisystem Volumenamen (wenn sie sowas überhaupt unterstützen) woanders. Bei NTFS z.B. gibts einen versteckten Stream mit dem Namen $Volume im Rootverzeichnis. Um an den heran zu kommen wenn die Parition nicht gemounted ist, wirst Du Dir die Hände aber ziemlich schmutzig machen müssen. NTFS per Hand parsen z.B..

RWarnecke 28. Mär 2008 17:10

Re: Partitionsbezeichnung auslesen - Partitionstabelle
 
In der Tabelle Win32_LogicalDisk vom WMI stehen alle Labels drin.

Muetze1 28. Mär 2008 18:18

Re: Partitionsbezeichnung auslesen - Partitionstabelle
 
Zitat:

Zitat von RWarnecke
In der Tabelle Win32_LogicalDisk vom WMI stehen alle Labels drin.

Auch von versteckten Partitionen die damit auch nicht eingebunden sind? Sicher?

RWarnecke 28. Mär 2008 23:37

Re: Partitionsbezeichnung auslesen - Partitionstabelle
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von RWarnecke
In der Tabelle Win32_LogicalDisk vom WMI stehen alle Labels drin.

Auch von versteckten Partitionen die damit auch nicht eingebunden sind? Sicher?

Upps, das mit dem versteckten habe ich doch irgendwie überlesen. :duck:

Ich habe es gerade mal getestet. Ich habe mit einem Partitionierungsprogramm eine zweite primäre Partition auf hidden gesetzt. Dann habe ich eigentlich nur die Möglichkeit rauszubekommen, ob eine Partition auf dem Datenträger versteckt ist über die Tabelle Win32_DiskPartiton. Dort werden mir auf jeden Fall alle Partitionen ob versteckt oder nicht angezeigt. In dieser Tabelle gibt es noch die Device ID, die ungefähr so aussehen kann :
Zitat:

Disk #0, Partition #0
Disk #0, Partition #1
Ich hoffe dass das ein bisschen weiterhilft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 Uhr.

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