![]() |
Datei in Benutzung -> Sperren
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
jeder kennt es wahrscheinlich: Man versucht eine Datei zu löschen, und merkt (dank umfangreicher Dialogboxen), dass die Datei bereits aktuell in Benutzung ist und daher (temporär) "gesperrt" wurde. Ich habe Google schon masakriert, aber die Dame ist heute wohl etwas zickig... Jemand hier eine Idee, wie man so etwas bewerkstelligen kann? Hafe vun, MCXSC |
Re: Datei in Benutzung -> Sperren
Öffne die Datei exklusiv.
|
Re: Datei in Benutzung -> Sperren
![]() ![]() Luckie geht wohl auch niemals schlafen :(. |
Re: Datei in Benutzung -> Sperren
Zitat:
Zitat:
|
Re: Datei in Benutzung -> Sperren
Luckie hat Urlaub und das wird ausgenutzt, da wird die Nacht zum Tag. ;)
|
Re: Datei in Benutzung -> Sperren
Zitat:
Ich habe nun zwei Möglichkeiten gefunden: Einmal mit einem gewissen OpenFile und einmal mit LockFileEx/UnlockFileEx. Sollte man eines davon bevorzugen? //Edit: Okay, habe mir nun mal etwas "zusammengebastelt":
Delphi-Quellcode:
Und dabei bekomme ich (zumindest bis zum sperren kommt er :D) die Fehlermeldung "Systemfehler. Code: 6. Das Handle ist ungültig."
//zum sperren
var lf_FileSize: Integer; lf_FileHandle: THandle; begin lf_FileHandle := CreateFile(PChar(Datei), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); lf_FileSize:= GetFileSize(lf_FileHandle, nil); LockFile(lf_FileHandle, 0, 0, lf_FileSize, 0); CloseHandle(lf_FileHandle); end //zum entsperren var lf_FileSize: Integer; lf_FileHandle: THandle; begin lf_FileHandle := CreateFile(PChar(Datei), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); lf_FileSize:= GetFileSize(lf_FileHandle, nil); UnlockFile(lf_FileHandle, 0, 0, lf_FileSize, 0); CloseHandle(lf_FileHandle); end; |
Re: Datei in Benutzung -> Sperren
Also bei mir geht dein Code. Probier doch mal ne andere Datei zu sperren.
Hab zwar fpc/lazarus aber das runft ja auch nur die <winAPI auf Gruß, Jan |
Re: Datei in Benutzung -> Sperren
Zitat:
|
Re: Datei in Benutzung -> Sperren
Zitat:
![]() Damit kann man nur, wärend die Datei geöffnet ist, einen "Teil" oder Alles einer Datei sperren.
Delphi-Quellcode:
var
lf_FileSize: Integer; lf_FileHandle: THandle; begin lf_FileHandle := CreateFile(PChar(Datei), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); lf_FileSize:= GetFileSize(lf_FileHandle, nil); LockFile(lf_FileHandle, 0, 0, lf_FileSize, 0); ... UnlockFile(lf_FileHandle, 0, 0, lf_FileSize, 0); CloseHandle(lf_FileHandle); end; |
Re: Datei in Benutzung -> Sperren
Zitat:
|
AW: Datei in Benutzung -> Sperren
hi,
sieht alles ganz schick aus. nur was mach ICH falsch? wenn ich versuche 'c:\windows\system32\config\SAM' zu unlocken, klappts natürlich nicht. jemand nie idee oder einen alternative lösungsansatz? also entweder würd ich die datei öffnwen oder kopieren...jedenfalls irgendwie an den inhalt rankommen... danke! |
AW: Datei in Benutzung -> Sperren
Du weißt schon, was in da drin steht? Und was würde es für die Sicherheit bedeuten, wenn man die Datei einfach kopieren könnte?
Ich gehe mal davon aus, dass dir die nötigen Rechte fehlen. Und ob man sich die als Administrator holen kann, weiß ich jetzt nicht. |
AW: Datei in Benutzung -> Sperren
Du kannst es nicht "unlocken".
Es wurde mit CreateFile und dwShareMode = 0 von Windows geöffnet. Zitat:
|
AW: Datei in Benutzung -> Sperren
Zitat:
|
AW: Datei in Benutzung -> Sperren
danke für die antworten.
aber gerade weil diese datei doch mit dwShareMode = 0 geöffnet wurde, müsste sie doch freigegeben werden um drauf zugreifen zu können ?! gibt es nicht ne möglich keit die bytes von der festplatte auszulesen? also ohne die datei an sich erst mit reset oder createstream zu öffnen? indem man vielleicht erst im dateisystem nachschaut, wo sie anfängt und aufhört? schönes wochenende |
AW: Datei in Benutzung -> Sperren
Zitat:
Zitat:
Zitat:
Was hast du mit der Datei eigentlich vor? Ich kann mir keinen sinnvollen Grund vorstellen wozu man sie öffnen können müsste. |
AW: Datei in Benutzung -> Sperren
Einfacher geht es, die Datei von einem anderen System aus zu lesen. Sollte eigentlich gehen.
PS. mit ShareMode = 0 sollte man normalerweise mit Backup Privilegien trotzdem zugreifen können. Aber diese Datei ist die Ausnahme. |
AW: Datei in Benutzung -> Sperren
Zitat:
|
AW: Datei in Benutzung -> Sperren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 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