Frage zu "SetVolumeLabel" und ADMIN-Rechten (winXP)



  • Hallo,

    ich schreibe gerade so eine Art Systemtool und möchte dem Benutzer die Möglichkeit geben, die Bezeichnung der Festplatte zu ändern.

    Ich habe bereits folgenden Code:
    **char VolumeName;
    char *pVolumeName;

    cout << "\nBitte neue Bezeichnung angeben: ";
    cin >> VolumeName;

    pVolumeName = &VolumeName;

    ("C:\", pVolumeName);**

    Das Problem:
    Es erscheint jeweils nur der erste Buchstabe der Bezeichnung, die der Benutzer angegeben hat, plus zwei Zeichen: E@!
    Beispiel: Der User gibt "Windoof" als Bezeichnung ein - das Ergebnis: "WE@", Wieso?

    Und noch eine kleine Frage: Wenn der Benutzer nur als "Gast" am PC angemeldet ist, kann selbst die Software nich die Datenträgerbezeichnung ändern, kann man dies ändern ?!?

    Danke



  • Das mit der Eingabe könnte daran liegen, dass du eine Zeichenkette der Länge 1 erstellst. Das liegt dann doch auf der Hand, dass das nicht gehen kann.

    Außerdem würde ich an deiner Stelle sowieso strings vorziehen.

    entweder:

    char *VolumeName = new char[50];
    cin >> *VolumeName;
    

    oder:

    #include <string>
    
    using namespace std;
    
    string str;
    cin >> str;
    

    Bei der zweiten Variante hast du wenigstens keine Probleme mit Overflow deiner Pointer.


Anmelden zum Antworten