Seite 1 von 1

schreibschutz ändern?

Verfasst: Freitag 3. Januar 2003, 18:16
von Haunt_House
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

Verfasst: Freitag 3. Januar 2003, 18:58
von hans
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

Verfasst: Freitag 3. Januar 2003, 19:26
von 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

Verfasst: Freitag 3. Januar 2003, 19:52
von Voges
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

Verfasst: Freitag 3. Januar 2003, 20:46
von hans
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.

Verfasst: Freitag 3. Januar 2003, 21:20
von Voges
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

Verfasst: Samstag 4. Januar 2003, 16:04
von hans
Hi Voges,
danke für die Info. Womit aber auch wieder bewiesen ist: Nichts ist so einfach, wie es denn scheint :shock:

Hans