cx_Freeze - Kein zugriff auf's Dateisystem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Scriptinggamer
User
Beiträge: 107
Registriert: Sonntag 24. Juni 2012, 16:38
Wohnort: Werder/Havel

Guten Tag allen miteinander,
Ich habe ein Programm geschrieben (Einen Vokabeltrainer) welches mit dem os Modul und dem json Modul Datein/Ordner Erstellen kann. Wenn ich es aber cx_Freeze, hat ein Benutzer das Problem das er Fehler wie "AtributeError: 'NoneType' object has no attribute 'write'" oder "Original Exception: (5, 'Zugriff verweigert', '*ZU ERSTELLENDER ORDNERNAME')" bekommt wenn er das Programm nicht als Admin ausführt. Woran liegt das? Lässt sich das beheben?
Vielen Dank
Gruß
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Man mag es nicht glauben, aber Windows hat seit geraumer Zeit tatsächlich eine Benutzerverteilung. Und wenn dein Anwender das Programm nur als Administrator richtig ausführen kann, dann will es offensichtlich einen Ordner an einer Stelle erstelle, wo es einem "normalen" Benutzer nicht erlaubt ist. Sprich, ihm fehlen die Rechte.

Die _genaue_ Fehlermeldung und der entsprechende Quellcode würden helfn das Problem zu analysieren. "*ZU ERSTELLENDER ORDNERNAME" geht glaube ich unter Windows nicht, weil kein * im Ordnernamen stecken darf.
Scriptinggamer
User
Beiträge: 107
Registriert: Sonntag 24. Juni 2012, 16:38
Wohnort: Werder/Havel

Das * und die Großbuchstaben sollen nur darauf hinweisen, dass dort ein belieger Name stehen kann, in diesem Fall steht da "vocabulary".
Die entsprechenden Stellen im Code sind:
os.mkdir("vocabulary")
und json.dumb()

Kann mein Anwender also ohne einem Programm Adminrechte zu verleihen garkeine Programme benutzen die Datein schreiben? Wie kann man einem Programm das Recht geben Datein zu schreiben ohne gleich volle Administratoren rechte zu verteilen?
Hab in der Hinsicht nicht soviel Ahnung :(
Danke für die schnelle Antwort
Gruß
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Lass mich raten: Ohne cx_freeze laeuft es? Lass dir mal `os.getcwd()` ausgeben und versuche mal einen absoluten Pfad fuer das Verzeichnis.
Scriptinggamer
User
Beiträge: 107
Registriert: Sonntag 24. Juni 2012, 16:38
Wohnort: Werder/Havel

Ich glaube es liegt daran da ich den Ordner direkt im installationverzeichniss erstelle, da gibt es doch so einen %appdata% ordner, is der für sowas da? (in dem ordner sollen dann die Vokabeln für das Programm gespeichert werden)
Gruß
Scriptinggamer
User
Beiträge: 107
Registriert: Sonntag 24. Juni 2012, 16:38
Wohnort: Werder/Havel

Dafür könnte ich dann os.environ['APPDATA'] benutzen, sollte ich das tun?
Gruß
Antworten