![]() |
Festplatten bezeichnung
Hallo
Ich brauch dringend eure hilfe ich find einfach keine lösung für mein problem. Also folgendes. Ich lese mit meinem Programm die Bezeichnung eines Laufwerks aus. z.B. SAMSUNG S0H2J1WL826549 USB Device. Diese bezeichnug hole ich mir aus der registry mir folgenden code:
Delphi-Quellcode:
in drivesdetected steht die Anzahl der Laufwerke die erkannt wurden (auch aus registry)
procedure TForm1.readdrivenames;
var Reg:TRegistry; I: Integer; regpath:String; begin for I := 0 to drivesdetected - 1 do begin Reg:=TRegistry.Create; try Reg.RootKey:=HKEY_LOCAL_MACHINE; reg.Access:=KEY_READ; Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\disk\Enum', false); if Reg.ValueExists(inttostr(I)) then begin regpath:=Reg.ReadString(inttostr(I)); end; Reg.CloseKey; finally Reg.Free; end; Reg:=TRegistry.Create; try Reg.RootKey:=HKEY_LOCAL_MACHINE; reg.Access:=KEY_READ; Reg.OpenKey('\SYSTEM\CurrentControlSet\Enum\'+regpath, false); hddrive[i]:=Reg.ReadString('FriendlyName'); hddrive2[i]:=Reg.ReadString('FriendlyName'); Reg.CloseKey; finally Reg.free; end; end; end; Allerdings gibt es ein problem. Ich muss der Laufwerksbezeichnung die echte Laufwerksnummer im system zuordnen. In der registry wird die nummer nach der reihenfolge wie die erkannt wurden vergeben. Wenn ich jetzt z.B eine festlpatte einstecke (USB) und einen stick bekommt der stick in der registry die nummer "1" und die Festplatte die nummer "2". Wenn ich den stick jetzt abziehe bekommt die Festplatte in der registry die "1" zugeordnet. im system bleibt es aber die nummer "2". also der systempfad zu der festplatte wäre also "\\.\PhysicalDrive2". da mein programm die werte aus der registry ausliest, bekommt es den pfad "\\.\PhysicalDrive1" zugeordnet. kann ich die Bezeichnung auch anders ermitteln, damit es da keine konflikte gibt? z.B. über eine API funktion? |
Re: Festplatten bezeichnung
Liste der Anhänge anzeigen (Anzahl: 3)
Hi,
letztes Mal hatte ich so ein ähnliches Problem. Mir ist dabei aufgefallen, dass die zum USB Stick gehörende ID (Bild 1) noch einmal unter SYSTEM\CurrentControlSet\Control\DeviceClasses\{53 f56307-b6bf-11d0-94f2-00a0c91efb8b} vorkommt (Bild 2). Dort ist in einem Unterschlüssel der Name SymbolicLink und mit dem langem Wert dahinter (Bild 3) konnte ich meinen USB Stick auslesen. Dabei spielte es keine Rolle ob ich noch andere Laufwerke vom USB Port abgezogen hatte oder nicht. Die GUID {53f56307-b6bf-11d0-94f2-00a0c91efb8b} unter SYSTEM\CurrentControlSet\Control\DeviceClasses soll den Device Interface Namen Disk Device haben. |
Re: Festplatten bezeichnung
Liste der Anhänge anzeigen (Anzahl: 1)
|
Re: Festplatten bezeichnung
Das mit der WMI sieht interessant aus! Da steht nämlich genau das was ich brauche! Der Device ID kann ich so den Namen und sogar noch die Größe zuordnen.
Jez muss ich nur noch wissen wie ich das umsetze...mal sehen Danke auf jeden fall! |
Re: Festplatten bezeichnung
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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-2025 by Thomas Breitkreuz