Es doch mit NTFS schon möglich Hardlinks zu erstellen.
Ich hab dafür z.B. http://schinagl.priv.at/nt/hardlinkshel ... llext.html installiert, mit den man das bequem machen kann.
Wäre schön, wenn man das mit Python machen könnte...
Warum os.link() nicht auch für Windows???
Wofür denn das? 80-90% aller Windows-Nutzer wissen ja noch nicht mal was ein Hardlink ist...jens hat geschrieben:Es doch mit NTFS schon möglich Hardlinks zu erstellen.
Ich hab dafür z.B. http://schinagl.priv.at/nt/hardlinkshel ... llext.html installiert, mit den man das bequem machen kann.
Wäre schön, wenn man das mit Python machen könnte...
Was mich allerdings an dem geposteten Link wundert, ist die Tatsache, dass Symlinks nur unter Vista unterstützt werden. Eigentlich sollte das auch schon unter XP gehen...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Mit der Bekanntschaft von Symlinks sieht es aber auch nicht besser aus. .lnk Dateien sind eben nur ein schlechter Ersatz.lunar hat geschrieben:Wofür denn das? 80-90% aller Windows-Nutzer wissen ja noch nicht mal was ein Hardlink ist...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ist das überhaupt im Filesystem implementiert oder ist dass nur eine erweiterung die ohne spezielle Treiber nicht funktioniert. Weill wenn es kein Bestandteil des Filesystem ist dann sollte man das lieber lassen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das NTFS in Windows 2000 unterstützt auch Junctions (das Tool wurde von den Sysinternals-Leuten geschrieben), welche wie Symlinks auf Ordner funktionieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wikipedia http://de.wikipedia.org/wiki/NTFS (Abschnitt NTFS 3.X):
Noch ein andere Stelle: http://de.wikipedia.org/wiki/Symbolischer_Link#Windows
Demnach gehen Hardlinks ab NT v4 + SP4......
# Hardlinks: Daten können von bis zu 1023 Dateinamen referenziert werden (eine Datei, viele Namen).
# NTFS-Junction-Points bzw. symbolische Links, um Verzeichnisse, Partitionen oder Laufwerke in andere Verzeichnisse einzuhängen (siehe Symlinks bei Unix/Linux). NTFS-Junction-Points können jedoch nur auf lokale Ressourcen verweisen, nicht auf Freigaben anderer Rechner – das ist nur mit DFS-Junction-Points möglich.
...
Windows NT 4.0 kann NTFS 3.X-Partitionen erst ab Service Pack 4 lesen.---
...
Noch ein andere Stelle: http://de.wikipedia.org/wiki/Symbolischer_Link#Windows
Eine weitere Möglichkeit in Windows sind Abzweigungspunkte („junction points“), welche jedoch das Dateisystem NTFS 5 bzw. ab Version 3.0 (Windows 2000, Windows XP, Windows 2003 und Windows Vista) voraussetzten. Diese sind den symbolischen Links auf Verzeichnisse sehr viel ähnlicher als Verknüpfungen.
-
- User
- Beiträge: 5
- Registriert: Samstag 12. Mai 2007, 18:35
Die c't hat auch schon mal Spielerein mit HardLinks für winXP gemacht.
"Fix verknüpft Hard-Link-Backups für Windows" http://www.heise.de/ct/ftp/06/09/126/
Allerdings fände ich es "besser" mit Mitteln in Python zu machen ohne extern ein Programm auszuführen. Und am besten wäre es wenn es Platfomunabhängig wäre.[/url]
"Fix verknüpft Hard-Link-Backups für Windows" http://www.heise.de/ct/ftp/06/09/126/
Allerdings fände ich es "besser" mit Mitteln in Python zu machen ohne extern ein Programm auszuführen. Und am besten wäre es wenn es Platfomunabhängig wäre.[/url]
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
``rsync``? Das ist doch wohl mal was ganz anderes...Master_of_Mechanic hat geschrieben:Die c't hat auch schon mal Spielerein mit HardLinks für winXP gemacht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich kann das nun für simpleDMS brauchen und mache mich wieder auf die Suche... Kennt jemand spontan Links zum Thema?
EDIT: "Add os.link() and os.symlink() support for Windows": http://bugs.python.org/issue1578269 (Erstellt 2006)
http://timgolden.me.uk/pywin32-docs/win ... _meth.html
http://timgolden.me.uk/pywin32-docs/win ... _meth.html
EDIT2: Na, toll:
Ausgabe:
Warum das?
So: https://sourceforge.net/tracker/index.p ... tid=551954
EDIT3: Mit 2.6.1 geht's. bzw. CreateSymbolicLink gibt es generell nur unter Vista.
Dumm ist, um Symbolische Links zu erstellen, braucht man Admin rechte. Diese kann man aber anscheinend nicht mehr im laufenden Programm erhalten, siehe: http://mail.python.org/pipermail/python ... 07600.html
EDIT: "Add os.link() and os.symlink() support for Windows": http://bugs.python.org/issue1578269 (Erstellt 2006)
http://timgolden.me.uk/pywin32-docs/win ... _meth.html
http://timgolden.me.uk/pywin32-docs/win ... _meth.html
EDIT2: Na, toll:
Code: Alles auswählen
import sys
import platform
import win32file
print sys.version
print platform.platform()
win32file.CreateHardLink # geht
win32file.CreateSymbolicLink # AttributeError: 'module' object has no attribute 'CreateSymbolicLink'
Code: Alles auswählen
2.5.2 (r252:60911, Mar 27 2008, 17:57:18) [MSC v.1310 32 bit (Intel)]
Windows-Vista-6.0.6001-SP1
Traceback (most recent call last):
File "test.py", line 12, in <module>
win32file.CreateSymbolicLink
AttributeError: 'module' object has no attribute 'CreateSymbolicLink'
So: https://sourceforge.net/tracker/index.p ... tid=551954
EDIT3: Mit 2.6.1 geht's. bzw. CreateSymbolicLink gibt es generell nur unter Vista.
Dumm ist, um Symbolische Links zu erstellen, braucht man Admin rechte. Diese kann man aber anscheinend nicht mehr im laufenden Programm erhalten, siehe: http://mail.python.org/pipermail/python ... 07600.html
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Irgendwie stimmt da was nicht. Denn mit dem Tool "Link Shell Extension" http://schinagl.priv.at/nt/hardlinkshel ... llext.html kann man ohne Admin rechte alles machen. Kein UAC unter Vista. Wie geht das?jens hat geschrieben:Dumm ist, um Symbolische Links zu erstellen, braucht man Admin rechte.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Laut dieser Seite braucht man dazu das Priviledge "Create Symbolic Link". Vielleicht macht ja die Shell-Extension irgendwelchen UAC-Voodoo?
Hast du ``mklink`` ausprobiert? Was passiert da?
Hast du ``mklink`` ausprobiert? Was passiert da?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das geht auch nur als Admin.
Da wir schon mal bei den Rechten sind. Ich möchte auch was unter win32con.HKEY_CLASSES_ROOT eintragen. Dafür braucht man ebenfalls Admin Rechte.
Ich hab mal irgendwo gesehen, das man bei fehlenden Rechten den Python Interpreter wieder per "runas" aufruft, um so zum Admin zu werden.
Ich verstehe allerdings nicht wie das gehen soll. Ich meine wie soll der runas Aufruf aussehen? Ich weiß doch nicht den namen vom Administrator. Außerdem soll es ja als aktuelle User laufen, der aber dann sich als Admin ausweißt. Letztlich soll also der vista UAC Dialog erscheinen, zum freischalten.
Da wir schon mal bei den Rechten sind. Ich möchte auch was unter win32con.HKEY_CLASSES_ROOT eintragen. Dafür braucht man ebenfalls Admin Rechte.
Ich hab mal irgendwo gesehen, das man bei fehlenden Rechten den Python Interpreter wieder per "runas" aufruft, um so zum Admin zu werden.
Ich verstehe allerdings nicht wie das gehen soll. Ich meine wie soll der runas Aufruf aussehen? Ich weiß doch nicht den namen vom Administrator. Außerdem soll es ja als aktuelle User laufen, der aber dann sich als Admin ausweißt. Letztlich soll also der vista UAC Dialog erscheinen, zum freischalten.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Zumindest dafür habe ich eine Lösung. Statt unter HKEY_CLASSES_ROOT, trage ich nun meine Dinge unter HKEY_CURRENT_USER\Software\Classes ein Da braucht man keine Admin rechte. Dafür sind die Einträge auch nur für den Aktuellen User gültig. Das Ein-/Austragen mache ich so:jens hat geschrieben:Da wir schon mal bei den Rechten sind. Ich möchte auch was unter win32con.HKEY_CLASSES_ROOT eintragen. Dafür braucht man ebenfalls Admin Rechte.
http://code.google.com/p/simpledms/sour ... svn20&r=20
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Was geht, sind Datei hardlinks, z.B.: win32file.CreateHardLink("test2.txt", "test.txt")
Bei einem win32file.CreateSymbolicLink("test", "test2") bekomme ich aber Fehler wie: Dem Client fehlt ein erforderliches Recht.
Ein kleines Test Programm hab ich hier gemacht: http://paste.pocoo.org/show/98615/
CreateSymbolicLink gibt's eh erst ab Vista. Denn erst bei NTFS von Vista gibt es Symbolische Links.
Als Alternative könnte man unter 2000 und XP halt die sog. "NTFS junction point" erzeugen. Hab in der win32api aber dazu nichts gefunden, habe aber diese .NET Funktion gesehen, weiß aber nicht wie ich da von CPython ran komme, siehe andern Thread: http://www.python-forum.de/topic-17343.html
EDIT: Eine Möglichkeit gibt es wohl doch: http://www.velocityreviews.com/forums/s ... ostcount=5
Stichwort win32file.DeviceIoControl, winioctlcon.FSCTL_SET_REPARSE_POINT und REPARSE_GUID_DATA_BUFFER
Sas ist echt abgefahren und sehr low-level, siehe: http://mail.python.org/pipermail/python ... 80295.html
Bei einem win32file.CreateSymbolicLink("test", "test2") bekomme ich aber Fehler wie: Dem Client fehlt ein erforderliches Recht.
Ein kleines Test Programm hab ich hier gemacht: http://paste.pocoo.org/show/98615/
CreateSymbolicLink gibt's eh erst ab Vista. Denn erst bei NTFS von Vista gibt es Symbolische Links.
Als Alternative könnte man unter 2000 und XP halt die sog. "NTFS junction point" erzeugen. Hab in der win32api aber dazu nichts gefunden, habe aber diese .NET Funktion gesehen, weiß aber nicht wie ich da von CPython ran komme, siehe andern Thread: http://www.python-forum.de/topic-17343.html
EDIT: Eine Möglichkeit gibt es wohl doch: http://www.velocityreviews.com/forums/s ... ostcount=5
Stichwort win32file.DeviceIoControl, winioctlcon.FSCTL_SET_REPARSE_POINT und REPARSE_GUID_DATA_BUFFER
Sas ist echt abgefahren und sehr low-level, siehe: http://mail.python.org/pipermail/python ... 80295.html