Datei kann trotz Vollzugriff aller Nutzer nicht geöffnet werden.



  • Ich möchte speichern, ob mein Bruder oder ich schon länger Computer gespielt hat.
    Also habe ich auf der ungeschützten D Partition eine Datei dafür angelegt und allen Nutzern Vollzugriff gegeben.
    Dann habe ich erstmal versucht, was draufzuschreiben:

    #include <fstream>
    
    using namespace std;
    
    int main()
    {
        ofstream out("D:\\Zockzeit\\difference.txt", ios::trunc);
        out << 65L;
    }
    

    Hat aber nicht geklappt.

    Wenn ich ein wichtiges Detail weggelassen habe oder was unklar ist, einfach fragen.



  • #include "stdafx.h" wie auch #include <stdafx.h> verursachen bei mir (CodeBlocks 13.12 mit MingW) den Fehler "fatal error: stdafx.h: No such file or directory". Wenn ich diesen Header weglasse, dann klappt es auch, sofern der Ordner <Zockzeit> vorher schon existiert. LG



  • Der stdafx Header ist nur bei Visual Studio, ich mach ihn einfach kurz raus. Bei mir klappt es halt nicht, ich kann auch irgendwohin nen Videobeweis posten. Ist richtig komisch.



  • Was heißt, hat nicht geklappt? Kompiliert nicht? Die Datei existiert nicht? In die Datei wurde nix reingeschrieben? So ist es etwas mühselig Fehler zu suchen oder Tipps zu geben.

    Edit: Mehrere Tippfehler....



  • Hat konpiliert, aber is_open() hat false ausgegeben. Dann hab ich trotzdem noch was in den ofstream geschickt, die Datei hat sich nicht geändert. Sie hat sich nicht mal geleert trotz ios::trunc.



  • Habe es jetzt durch viele Tests herausgefunden.
    Es ist vorteilhaft, wenn man programmeigene Dateien durch das Programm selber erstellt. difference.txt wurde über den Explorer erstellt, und der hatte was verändert, sodass die Datei sich nicht mehr mit meinem Testprogramm öffnen ließ.
    Ich freue mich gerade riesig, ich sitz schon 2 Wochen an dem Problem, dass ich nicht mit Dateien arbeiten kann. 🙂



  • Das Problem hatte ich nie. Der Explorer erstellt die Datei mit den vom Verzeichnis vererbten Berechtigungen und dem Account unter dem Explorer läuft (=normalerweise der Account mit dem man eingeloggt ist) als Owner. Anders gesagt: das was CreateFile macht wenn man nix spezielles mitgibt.

    std::ofstream macht nix anderes.

    Vielleicht hast du beim Versuch allen Nutzern Vollzugriff zu geben irgendwas kaputt gemacht?



  • Ne, habe das über den Standardweg in den Eigenschaften gemacht. Ist irgendwie komisch. Aber jetzt krieg ich's ja hin.



  • Timon Paßlick schrieb:

    Ist irgendwie komisch.

    Das ist bei Computern, speziell wenn es um Programmierung von so trivialen Dingen geht, ein recht starkes Indiz dafür dass du etwas nicht oder gänzlich falsch verstanden hast.



  • Kann sehr gut sein, aber woher soll ich wissen, was?



  • Indem man die Dokumentation der Funktionalitaeten liesst, die man versucht zu verwenden?!



  • Hab ich ja, is ja gut. Hab inzwischen ne englische Dokumentation zu fstream komplett durchgelesen und verstanden. Nicht immer irgendwas vorwerfen, was gar nicht stimmen muss.



  • Timon Paßlick schrieb:

    Kann sehr gut sein, aber woher soll ich wissen, was?

    Meine Vermutung hab ich dir ja schon genannt: Vielleicht hast du beim Versuch allen Nutzern Vollzugriff zu geben irgendwas kaputt gemacht?



  • Geht dabei was kaputt?

    Rechtsklick auf Datei ➡ Eigenschaften ➡ Sicherheit ➡ Bei allen Nutzern / Gruppen Vollzugriff zulassen

    Würde mich äußerst wundern, theoretisch möglich wäre es natürlich trotzdem.



  • Hm, nein, das klingt korrekt.
    So aus der Ferne hab ich jetzt auch keine konkreten Ideen mehr.


Log in to reply