Laden...

\Device\Harddisk0\Partition1

Erstellt von yooti vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.004 Views
Y
yooti Themenstarter:in
11 Beiträge seit 2009
vor 14 Jahren
\Device\Harddisk0\Partition1

hallo @ all

bin gerade dabei mir ein zusatztool für "TrueCrypt" zu basteln, zum mounten der komplett verschlüßelten Festplatten

wenn mann mehrere Festplatten mit der selben größe ist es schwer heraus zu finden welche platte welche ist und wo sie eingebunden werden soll.

ich hab mir eine funtion geschrieben die schon mal herusfindet mit welcher Festplatte ich überhaupt rede

das beispiel:


        private void Form1_Load(object sender, EventArgs e)
        {
            ManagementObjectSearcher mang = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity");

            foreach (ManagementObject obj in mang.Get())
            {
                if (Convert.ToString(obj["Name"]) == "SAMSUNG HD300LJ ATA Device")
                {
                    MessageBox.Show("Samsung 300GB Platte gefunden");
                }
            }
        }

soweit ist erst mal alles gut !

jetzt muß ich aber herausfinden wo genau die platte im system eingebunden ist ! aber nach folgendem muster: \Device\Harddisk0\Partition1 !!! Die ein und die selbe platte wird mal als Harddisk0 und nach eine neustart des rechnes als Harddisk1 oder Harddisk5 eingebunden oder wie auch immer ( fast jedes mal wo anders )

was gibt es für möglichkeiten heraszufinden wo die platten im system eingebunden werden ?

dies brauch ich für die funktion zum schnellen mounten der Festplatten mit dem richtigen laufwerksbuchstaben

das Beispiel


        string platte_01 = "";
        string truecrypt_pfad = @"C:\TrueCrypt\TrueCrypt.exe";

        private void Contex_menu_01_Click(object sender, EventArgs e)
        {
            Process.Start(truecrypt_pfad, @"/v " + platte_01 + @"  /ld /q");
        }

ich hoffe ihr könnt mir in iregendeiner weise helfen

mfg yooti

1.457 Beiträge seit 2004
vor 14 Jahren

Hallo yooti,

Ich selber benutze TrueCrypt mit der eingebauten Funktion "Mount Favorite Volumes". Vielleicht ist diese Funktion genau das was du suchst.

Y
yooti Themenstarter:in
11 Beiträge seit 2009
vor 14 Jahren

nicht ganz das richtige was ich suche !

ich hab eine Form die nur 2x2 pixel groß ist (incl.Button) und die liegt ganz oben links mit topmost=true als panikbutton für dismount

desweiternen bietet mir der buttom ein contexmenu um nur die platte einzubinden die ich wirklich brauche und nicht alle die ich habe.

ich hab mal mein projekt gezipt !

der quellcode von truecrypt ist ja offen da sollte es doch eine möglichkeit geben herauszufinden welche platte unter \Device\Harddisk0\Partition1 eingebunden ist

hier der link zum quellcode: http://www.truecrypt.org/downloads2

ich hab da schon mal reingeschaut ! aber nur gucke ich da wie ein schwein ins uhrwerk und hab kein plan

ps. ich hab letztes jahr erst angefangen zu proggen und bis jetzt habe ich mir alles allein beigebracht

mfg yooti

Y
yooti Themenstarter:in
11 Beiträge seit 2009
vor 14 Jahren

kann das sein das mir hier diese seite weiterhilft ?

An in-depth look at WMI and Instrumentation: Part II

mfg yooti

Y
yooti Themenstarter:in
11 Beiträge seit 2009
vor 14 Jahren

nach 3 wochen suchen und testen googeln und verzweifeln hab ich fast das gefunden was ich suche

hier ist ein auszug meiner recherche



            ManagementObjectSearcher hdd = new ManagementObjectSearcher("root\\CIMv2", "SELECT * FROM Win32_DiskDrive"); 
            foreach (ManagementObject disk in hdd.Get()) 
            { 
                try 
                { 
                    Console.WriteLine("Caption HDD: " + disk.GetPropertyValue("Caption").ToString()); 
                    Console.WriteLine("Model: " + disk.GetPropertyValue("Model").ToString());
                    Console.WriteLine("Name: " + disk.GetPropertyValue("Name").ToString());
                    Console.WriteLine("Partitions: " + disk.GetPropertyValue("Partitions").ToString());
                    Console.WriteLine("Größe: " + disk.GetPropertyValue("Size").ToString());
                    Console.WriteLine("SerialNumber: " + disk.GetPropertyValue("SerialNumber").ToString());
                    Console.WriteLine("PNPDeviceID: " + disk.GetPropertyValue("PNPDeviceID").ToString());
                    Console.WriteLine("-----------------------------------------------------");
                } 
                catch 
                { 
                } 
            } 
            Console.WriteLine("//ende hdd---------------------------------------------------------------//");



            ManagementObjectSearcher hdd2 = new ManagementObjectSearcher("root\\CIMv2", "SELECT * FROM Win32_DiskPartition");
            foreach (ManagementObject disk in hdd2.Get())
            {
                try
                {
                    Console.WriteLine("Caption HDD: " + disk.GetPropertyValue("Caption").ToString());
                    Console.WriteLine("Größe: " + disk.GetPropertyValue("Size").ToString());
                    Console.WriteLine("DeviceID: " + disk.GetPropertyValue("DeviceID").ToString());
                    Console.WriteLine("-----------------------------------------------------");
                }
                catch
                {
                }
            }
            Console.WriteLine("//ende hdd2---------------------------------------------------------------//");


ich wollte zwar das ergebnis "\Device\Harddisk3\Partition1" aber damit kann ich auch was anfangen "Disk #3, Partition #0"

hilfreich war auch was bei codeprojekt
http://www.codeproject.com

das Thema kann tehoretisch geschlossen werden außer es doch noch jemand eine idee wie ich direkt an "\Device\Harddisk3\Partition1" ran komme !

mfg yooti