festplatten id mittels GetVolumeInformation



  • Hallo alle zusammen,

    liege ich da richtig, das die Volume ID die man mit "dir" in der eingabeauforderung sehen kann die ist die ich auch mit
    GetVolumeInformation(); bekomme?
    Wenn ja stimmt da was nicht...wenn ich dwVolumeSerial ausgebe kommt bei mir:
    480625555 aber meine VolumeID laut "dir" ist:
    1CA5-C393

    Hier der Code:

    char WinDirBuffer[255];
    
        string RootPathName = "c:\\"; // address of root directory of the file system
        DWORD dwVolumeSerial=0;	                            // address of volume serial number
        DWORD dwMaximumComponentLength;	                    // address of system's maximum filename length
        DWORD dwFileSystemFlags;     	                    // address of file system flags
    
        GetVolumeInformation(RootPathName.c_str(), NULL, NULL,
        &dwVolumeSerial, &dwMaximumComponentLength, &dwFileSystemFlags,
        NULL,NULL);
    

    P.s. wie kann man eigentlich herausbekommen welche partition die Windoof partition ist?

    vielen danke schonmal im Vorraus 🙂

    EDIT: warum sind da jetzt bitte sternchen???? Vor.raus



  • Black Hell schrieb:

    liege ich da richtig, das die Volume ID die man mit "dir" in der eingabeauforderung sehen kann die ist die ich auch mit
    GetVolumeInformation(); bekomme?

    Ja.

    Black Hell schrieb:

    Wenn ja stimmt da was nicht...wenn ich dwVolumeSerial ausgebe kommt bei mir:
    480625555 aber meine VolumeID laut "dir" ist:
    1CA5-C393

    Du solltest Sie vielleicht auch als Hex-Wert ausgeben 😉

    Black Hell schrieb:

    P.s. wie kann man eigentlich herausbekommen welche partition die Windoof partition ist?

    Umgebungsvariable "SystemDrive"

    Black Hell schrieb:

    vielen danke schonmal im v****** 🙂
    EDIT: warum sind da jetzt bitte sternchen???? Vor.raus

    Weil es vermutlich falsch schrieben ist!? Pisa lässt grüßen...



  • Cool danke, es funktioniert, hätte ich auch selber drauf kommen können.Danke

    achja:die Pisa-Studie tangiert mich peripher, man selbst ist wer zählt! 🙄

    Ich habe jetzt rumgeoogelt und so, aber was meinst du mit Umgebungsvariable "SystemDrive"?

    Und noch eine Frage:

    Ich mache die Ausgabe so:

    cout << hex << dwVolumeSerial << endl;
    

    Gibt es eine Möglichkeit das in eine char Variable zu speichern, also den hex wert?So das ich damit als Text weiter arbeiten kann?



  • Hi
    Glaub die std::string klasse kann das... dann Obj.c_str() zum umwandeln innen C-String 😉

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    string strTemp;
    char        szBuffer[100];
    // dwVolumeSerial initialisieren...
    // ...
    strTemp << hex << dwVolumeSerial;
    strncpy(szBuffer, strTemp.c_str(), 100);
    

    !Code ist nicht getestet!

    MfG CodeFinder



  • Black Hell schrieb:

    Ich habe jetzt rumgeoogelt und so, aber was meinst du mit Umgebungsvariable "SystemDrive"?

    printf("Sytem-Drive: %s", getenv("SystemDrive"));
    


  • Hallo nochmal.... jetzt verstehe ich was du mit Umgebungsvariable meinst, sorry bin noch relativ neu in c++...

    wegen

    strTemp << hex << dwVolumeSerial;
    

    :

    Dev-Cpp sagt mir das der Operator nicht zulässig ist, bzw. das hier:

    26 D:\Programme\Dev-Cpp\Projects\PWSniffer\main.cpp no match for 'operator<<' in 'strTemp << std::ios_base::hex'
    

    Also die Logik dahinter habe ich kapiert, leider funktioniert das so nicht.

    EDIT: Es wäre möglich diesen Wert in eine Datei zu speichern und gleich wieder einzulesen, das könnte man locker schaffen, aber ist irgendwie blöd


Anmelden zum Antworten