schreibschutz ändern?

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
Haunt_House
User
Beiträge: 2
Registriert: Freitag 3. Januar 2003, 18:03
Wohnort: Kassel

Hi

Wie kann ich mit Python den Schreibschutz einer Datei in Windows ändern (Vielleicht brauch ich das auch bald für Linux)? Danke im voraus

Haunt_House
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Weches Windows meinst du. Da gibt's gewaltige Unterschiede in OS und auch vom Filesystem her. (Win 9x, Win NT, Win 2K,.. und FS FAT, FAT32, NTFS in diversen Varianten)

Bei Linux mußt du dass Recht haben, die Dateirechte zu ändern. Dazu mußt du entweder root rechte haben oder owner der Datei sein sonst geht garnix. (Vielleicht gibt's noch andere Methoden, die ich persönlich jedoch noch nie benötigt habe)

Hans
Gast

hm, shuldigung, an die Profisysteme hab ich eigentlich gar nicht gedacht. Ich meine in erster Linie 98, aber wenn mein Programm auch auf 95 oder me läuft, bin ich nicht böse.

Außerdem dachte ich nicht, daß Python die Plattendaten auf Lowlevelebene manipuliert. Werden nicht letztendlich Dosbefehle dazu benutzt?

Bin eben noch ein ziemlicher Anfänger.

Haunt_house
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Hallo!
hans hat geschrieben:Da gibt's gewaltige Unterschiede in OS und auch vom Filesystem her. (Win 9x, Win NT, Win 2K,.. und FS FAT, FAT32, NTFS in diversen Varianten)
Kannst Du das erläutern? Solange der, der das Script ausführt, alle Rechte an der Datei hat, geht das mit jeder Windowsversion und zudem auch immer auf die gleiche Weise. Und vom Filesystem ist das schon gar nicht abhängig. Gegenüber solchen "Highlevel"-Dateiaktionen verhalten die sich doch völlig transparent.
Was also immer gehen sollte (entsprechende Rechte vorausgesetzt):

Code: Alles auswählen

from win32file import *
fileattrs = GetFileAttributes("test.dat")
SetFileAttributes("test.dat",FILE_ATTRIBUTE_READONLY | fileattrs)
Jan
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Hi Voges

Es lag ja keine Info in Bezug auf OS vor.

Unter Windows 9x / FAT habe ich nur die Möglichkeit, ein Schreibattribut zu setzen. Es gibt hier keine Rechte, die userbezogen sind. Das sieht aber schon anders aus, wenn du auf eine Datei von einem NT, Netware oder sonstwas Server zugreifst.
Voges hat geschrieben: Solange der, der das Script ausführt, alle Rechte an der Datei hat, geht das mit jeder Windowsversion
Einverstanden, aber leider nicht der Normalfall. Ich muß bei allen Änderungen erst prüfen, ob ich die Aktion ausführen kann. Ausgenommen hiervon sind wohl lediglich reine Win 9x Versionen ohne jeglichen Netzwerkzugriff.

Im übrigen finde ich weder GetFileAttributes(), SetFileAttributes() noch das Modul win32file in der Dokumentation von Python.org. Da ich aber Linux benutze, hat mich das bisher auch nicht gestört.
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Hallo Hans!
hans hat geschrieben:Ich muß bei allen Änderungen erst prüfen, ob ich die Aktion ausführen kann. Ausgenommen hiervon sind wohl lediglich reine Win 9x Versionen ohne jeglichen Netzwerkzugriff.
Auch bei Win9x kann genug schief gehen; anderer Prozess hat den Daumen drauf oder der Datenträger selbst ist schreibgeschützt. Um die Auswertung der verschiedenen Exceptions wird man eh nicht herumkommen.
Im übrigen finde ich weder GetFileAttributes(), SetFileAttributes() noch das Modul win32file in der Dokumentation von Python.org.
Hat' ich vergessen. win32file ist Teil der Windows-Extentions (http://starship.python.net/crew/mhammond/). Bei der Python-Version von ActiveState sind die schon dabei, bei der "Originalversion" nicht.

Jan
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Hi Voges,
danke für die Info. Womit aber auch wieder bewiesen ist: Nichts ist so einfach, wie es denn scheint :shock:

Hans
Antworten