![]() |
Datei löschen trotz Schreibzugriffverbot
Hi,
ich wüßte gerne ob es eine Möglichkeit gibt den Inhalt eines txt-Files zu ändern auch wenn ich dieses File z.B. in Word aufhabe und mir Word den Zugriff auf diese Datei verweigert. Wenn ja wie mach ich das? Möchte eine Datei die ich für die Übergabe von Daten benutzen muß im Temp-Verzeichnis von Windows ändern. Und zwar zwingend, auch wenn eine andere Anwendung wie Word diese sperrt. Bis jetzt habe ich nur ne Notlösung damit es wenigstens mal so geht:
Delphi-Quellcode:
1000 Dank im Voraus
function GetTempFolder: AnsiString;
var Buf: array[0..MAX_PATH] of AnsiChar; begin GetTempPath(SizeOf(Buf), @Buf); Result := Buf; if Result <> '' then if AnsiLastChar(Result)^ <> '\' then Result := Result + '\'; end; procedure Speichern(Text: String); var Datei: Integer; Buffer: PChar; F: String; begin F := GetTempFolder + 'paddydat'; Datei := FileCreate(F, fmCreate); if Datei > 0 then begin Buffer := PChar(Text); FileSeek(Datei, 0, 0); FileWrite(Datei, Buffer^, Length(Text)); FileClose(Datei); end else Application.MessageBox('Datei kann nicht erstellt werden!' + #13 + #13 + 'Eine andere Anwendung hat die Datei geöffnet' + #13 + 'und blockiert den Schreibzugriff!' + #13 + #13 + 'Schliessen Sie die Anwendung welche die Datei' + #13 + 'geöffnet hat und versuchen Sie es erneut!', 'Problem',48); end; |
Re: Datei löschen trotz Schreibzugriffverbot
Entweder alle Programme öffnen die Datei geshared, oder du wirst keine Möglichkeit haben.
|
Re: Datei löschen trotz Schreibzugriffverbot
Schade, dachte da gibts vielleicht noch ein Hintertürchen. :-( Gibt es aber dann wenigstens die Möglichkeit herauszufinden welches Programm diese Datei geöffnet hat, damit man dem Benutzer sagen kann er soll doch bitte schön erst mal die geöffnete Datei schliessen bevor es weiter geht?
|
Re: Datei löschen trotz Schreibzugriffverbot
Wenn es da ein Hintertürchen geben würde, dann wäre ja der exklusive Zugriff auf eine Datei für den Popo. :roll:
Kuck mal auf ![]() |
Re: Datei löschen trotz Schreibzugriffverbot
Na ja, es gibt aber auch Hintertürchen.
Es gibt irgendwie 'ne Möglichkeit aktive Verbindungen zu Dateien/Laufwerken zu trennen, aber wozu will man das -.- Es sollte doch einfacher sein, dir die alleinigen Rechte zu besorgen, entwerder mit Hilfe der NT-Rechte den Zugriff durch andere Programme verhinden, welche die Datei so ungewünscht öffnen, oder einfach die Datei selber geöffnte halten, so dass keine fremdes Programm die Datei aufmacht. Oder ganz einfach ... Datei kopieren und dann die Kopie mir ord und Co. laden. |
Re: Datei löschen trotz Schreibzugriffverbot
Das Problem ist das ich an ein anderes Programm etwas übergeben will und der Programmierer eben nur diesen Weg gewählt hat. Ändern wird er es nicht weil er sonst etliche Versionen des Programmes neu erausgeben müßte. Viel zu viel Arbeit also. Der Ablauf bei dem Übergeben sieht folgendermassen aus:
Hauptprogramm ist der NC-Editor von dem Programm NC-FOX aus diesem rufe ich ein Makro auf in dem angegeben ist mein Tool zu starten. Mein Tool schreibt dann beim Beenden Text in die "paddydat" im Temp Verzeichniss. Der NC-Editor wartet bis mein Tool wieder beendet ist. Wenn dies geschieht fügt der NC-Editor den Text der eben in diese "paddydat" ist ein. Wenn ich aber jetzt die "paddydat" mit z.B. Word auf habe kann ich ja nicht in die Datei schreiben, d.h. beim beenden von meinem Tool schreibt der NC-Editor den aktuellen Text der "paddydat" in das NC-Editorfenster. Wenn ich in meinem Tool auf "Abbrechen" klicke soll aber der Text der in der "paddydat" enthalten ist gleich Null, nix, nullkommanull sein. Wenn Zugriff aber verweigert dann is dat aber schlecht. :-( Himitsu, Du hast geschrieben das man vielleicht die Verbindung zu der Datei trennen kann. Wenn das nun möglich wäre käme sicher im Word dann eine Fehlermeldung. Oder? Aber im Grunde ist das egal da der Anwender mit der Datei sowieso nix am Hut hat und darin nix zu machen hat. Man kann ja vorher noch eine Warnmeldung ausgeben bevor getrennt wird. ;-) Wenn das trennen geht dann wüßte ich gerne wie :roll: |
Re: Datei löschen trotz Schreibzugriffverbot
Leider weiß ich auch nur dass es möglich ist, aber nicht wie :cry:
Irgendwoher muß ja Windows wissen, welche Dateien geöffnet sind ... also denk ich mal, man müßte halt nur die entsprechende Datei aus dieser Liste entfernen :gruebel: Ich selber suche auch schon sowas, da bei mir abundzu mal der Explorer großere Dateien blockiert (je größer, desto schlimmer wird das ... z.B. bei Dateien mit über 2 GB's) FORMAT kann z.B. die Bereitstellung eines gesamten Laufwerks und dammit aller Dateien auf diesem aufheben, das sollte bestimmt auch für einzelne Dateien möglich sein. |
Re: Datei löschen trotz Schreibzugriffverbot
Tja jetzt ist guter Rat teuer. Wer könnte sich den damit auskennen oder nach welchen Begriffen kann man da am besten Googeln? Im Kopf hätt ich es schon nur das umsetzen macht mir ein bisserl Probleme. :pale:
|
Re: Datei löschen trotz Schreibzugriffverbot
Kuck dir doch mal den Link von Luckie an :roll:
|
Re: Datei löschen trotz Schreibzugriffverbot
Den Link hab ich schon angeguckt. Da ich aber noch voll in den Kinderschuhen stecke mit dem Programmieren kann ich damit nicht wriklich viel anfangen :gruebel:
Wie man es machen könnte im groben und ganzen, daß man die Dateiverbindung löscht leuchtet mir ja ein. Sprich ich weiß was ich gern erreichen möchte scheitere jedoch am umsetzen in Code da ich wenig Erfahrung habe! Weischt was ich mein. |
Re: Datei löschen trotz Schreibzugriffverbot
Eine andere aber nicht einfache Möglichkeit wäre nen Funktionshook für die andere Anwendung zu schreiben und alle Dateizugriffe abzufangen und in Shared-Zugriffe umzuwandeln.
Oder gleiche die "WriteLn" Funktion ersetzen und den Text direkt rüberholen. Aber wenn du sagst dass du gerade erst in den Kinderschuhen steckst ist das wohl keine geeignete Lösung. |
Re: Datei löschen trotz Schreibzugriffverbot
Jepp genau so sieht es aus Vjay. Dachte da gibts schon was fertiges oder das jemand schonmal das Problem hatte und es gelöst hat. Müßte ja im Prinzip so etwas ähnliches sein wie die Funktion des Taskmanagers wo man ein Programm mit abschiessen kann, nur das man halt die Verbindung zwischen Programm und Datei kappt egal was kommt *grins*
|
Re: Datei löschen trotz Schreibzugriffverbot
Was du machen willst ist gefaehrlicher Schwachsinn.
Wenn eine Datei geoeffnet ist, dann darf man sie nicht loeschen. Es trotzdem zu tun zerstoert die Konsistenz des Filesystems. Um uebrigens mal auf den Titel des Threads zurueckzukommen: Das Schreibrecht und das Loeschrecht koennen fuer eine Datei durchaus unterschiedlich sein. Das ist z. B. bei Netware der Fall. Ist die Datei jedoch geoeffnet darf und kann sie man aber nie loeschen. |
Re: Datei löschen trotz Schreibzugriffverbot
Zitat:
|
Re: Datei löschen trotz Schreibzugriffverbot
Zitat:
Zitat:
|
Re: Datei löschen trotz Schreibzugriffverbot
Den Sinn könnte es zum Beispiel haben um aktuelle Infos aus einem Log File zu lesen ...
Nehmen wir an du hast nen Verbindungsüberwachungsmanager, der Log-Datei schreibt und diese Datei die ganze Zeit mit nem Lock versehen hat. Du willst aber die aktuellen Werte haben und nicht erst den Manager schließen ... Wäre zum Beispiel ein Grund um das File Locking aufzuheben... Bin zwar auch gegen sowas aber was solls *g* |
Re: Datei löschen trotz Schreibzugriffverbot
Wenn es eine eigene Anwedung ist, kann man die Datei ja einfach non-exclusive öffnen, dann ist das auch kein Problem.
|
Re: Datei löschen trotz Schreibzugriffverbot
Und wenn es keine eigene ist :roll:
Ob das ganze nun Sinn hat oder nicht... Geht ja nur darum zu klären wie es geht :coder2: |
Re: Datei löschen trotz Schreibzugriffverbot
Genau SubData,
ich will schreiben nicht nicht lesen! Sorry wenn der Titel nicht so recht passen sollte! |
Re: Datei löschen trotz Schreibzugriffverbot
Zitat:
:wiejetzt: Schreiben oder lesen? |
Re: Datei löschen trotz Schreibzugriffverbot
quasi so, man hat irgendein Word Dokument offen und ein besonders lieber Virus schreibt einem in die bereits geöffnete Datei en Macro rein.
Excel kann man mit einem Startparameter dazu bringen eine Datei schreibgeschützt zu öffnen, das heißt man kann in Excel nichts ändern und eigentlich ist die Datei dann nur für Lesezugriffe geöffnet. Eventuell kannst Du das auch für Wordübernehmen und Dein Problem auf diese Weise lösen. |
Re: Datei löschen trotz Schreibzugriffverbot
Das mit dem FileLocking aufheben wäre in meinem speziellen Fall nicht schlecht. So hört es sich jedenfalls für mich an. Irgendwie muß das doch gehen. :wall:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz