Ordner in Anwendungsdaten erstellen!



  • Hallo zusammen,
    habe Probleme einen Ordner im userspezifischen Bereich unter Anwendungsdaten zu erstellen. Das ganze wird mit Visual C++ 6 und MFC programmiert und muss nur unter w2k und xp laufen, dort aber zuverlässig! Die MFC bietet glaub ich keine Möglichkeit. mkdir mit aufgehendem Dos-Fenster ist inakzeptabel. Mit CreateDirectory kann ich zwar einen Ordner z.B. C:\\TEST\\ erstellen in den Anwendungsdaten scheint das aber nicht zu klappen, obwohl die Funktion keinen Fehler zurückgibt.

    if(!FAILED(SHGetSpecialFolderPath(0, szFolder, CSIDL_APPDATA, false))){
    CString appdata(szFolder);
    //Pfad für Falschfarben
    gffpfad = appdata+"\\Falschfarben\\";
    //wenn nicht vorhanden, dann Ordner erstellen
    if(CreateDirectory(gffpfad,NULL)!=0)
    AfxMEssageBox("Ordner kann nicht erstellt werden!");
    }
    

    Fällt da jemandem was auf? Liegt es vielleicht an dem security-Attribut? Oder habt Ihr ne andere Idee? Es scheint auch eine Möglichkeit zu geben die shell32 zu benutzen. Ich möchte aber nur ungern eine Library importieren. Danke im vorraus Gruss Alfons



  • Also ich weiß nicht wieso du das ganze auf != 0 abprüfst aber
    bei mir gibt CreateDirectory TRUE zruück wenn es klappt und ansonsten FALSE.
    Also ist deine Abfrage schon mal falsch. Hast du schon mal im debugger geschaut was denn so in gfffpfad steht?

    Gruß,
    Stalin



  • Wie recht Du hast, Stalin. Hab die Abfrage nur flüchtig hingezaubert. Hab es geändert und GetLastError gibt S_OK zurück. In gffpfad steht mein Anwendungsdaten-Ordner "C:\Dokumente und Einstellungen\alfons\Anwendungsdaten\Falschfarben\", das müsste ok sein. Danke für Deine Hilfe. Gruss Alfons



  • Das liesst sich jetzt, als würde es funktionieren. Tut es aber nicht. S_OK was soll das heissen?



  • Entschuldige die Verzögerung. Habe Klausuren geschrieben. S_OK liefert GetLastError(). Was das bedeutet weiss ich auch nicht. Hört sich doch eigentlich nach Erfolg an, aber wie Du schon sagtest, der Ordner wird nicht erstellt.



  • Hat sich erledigt. Die Funktion kann nur ein! Verzeichnis anlegen. Gibt man einen Pfad an z.B C:\myapp\config\ und myapp existiert noch nicht, gibt die Funktion einen Fehler zurück ohne den Pfad anzulegen. Lösung: CreateDirectory für jedes Verzeichnis erneut ausführen oder SHCreateDirectoryEx benutzen.


Anmelden zum Antworten