![]() |
Prüfen, ob Datei gesperrt ist
Hallo,
ich weiß, dass dieses Thema bereits im Forum besprochen wurde, aber die Funktion
Delphi-Quellcode:
unter
IsFileInUse()
![]() Ich habe ein Testprogramm, dass bei mir die Datei test.txt exklusiv öffnet.
Code:
Versuche ich die Datei im Texteditor zu öffnen, bekomme ich die Meldung, dass sie nicht geöffnet werden kann.
try
fs := TFileStream.Create('C:\test.txt', fmShareExclusive); except fs := nil; //damit fs.Free keine Exception wirft exit; end; Soweit so gut. Mein zweites Programm soll das überprüfen:
Code:
Leider gibt das Programm immer Alles OK. aus.
if IsFileInUse('C:\test.txt') = false then
Showmessage('Alles ok.') else Showmessage('Die Datei ist gesperrt.'); Kann mir einer auf die Sprünge helfen, woran das liegen könnte? Danke. |
AW: Prüfen, ob Datei gesperrt ist
Glaskugel auspack: Du hast Win7/Vista mit aktivem UAC und deine Anwendung hat kein passendes Manifest um die Virtualisierung des Dateisystems abzuschalten.
|
AW: Prüfen, ob Datei gesperrt ist
Mal ins Blaue geschossen: Windows 7 und UAC??
|
AW: Prüfen, ob Datei gesperrt ist
Ja, ich habe Win7 mit UAC.
Zitat:
Was muss ich tun, um die Virtualisierung zu umgehen? |
AW: Prüfen, ob Datei gesperrt ist
Bin keine Profi warte aber auch grade auf ne Antwort.
Vielleicht passt das : ![]() Musst ein bischen scrollen. Hoffe englsich passt... |
AW: Prüfen, ob Datei gesperrt ist
Hallo Ihr!
Vor einem ähnlichen Problem stehe, eher stand ich auch, und zwar ist es einer gehookten DLL unter Windows 7 64 Bit i.d.R. unmöglich, auf eine Datei lesend zuzugreifen, außer, wenn das Programm, das den Hook installiert hat (Hostprogramm?), diesen Hook auslöst. Deshalb waren die Hinweise hier nützlich, doch Änderungen an der UAC brachten auch nach Neustart bei mir keinen Erfolg. Datei kann nicht zum Lesen geöffnet werden, der Fehlercode von IOResult=5 ("Kein Dateizugriff möglich", das kam mir auch vorher schon so vor). Insofern werde ich es wohl mit sog. "Memory Mapped Files" probieren, vielleicht funktioniert es ja damit. |
AW: Prüfen, ob Datei gesperrt ist
Also, ich dachte ich muss wegen der Virtualisierung noch etwas ins Manifest hinzufügen.
Aber ich nutze ja derzeit das folgende Manifest als eigebundene Ressource.
Code:
@Delphi-Laie: Ich habe nicht das Problem, dass ich nicht zugreifen kann. Ganz im Gegenteil, es wird zurückgegeben, dass man auf die Datei zugreifen kann, obwohl sie gesperrt ist.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="Mein Programm" processorArchitecture="x86" version="1.0.0.0" type="win32"/> <description>Programmbeschreibung</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level = "asInvoker" uiAccess = "false" /> </requestedPrivileges> </security> </trustInfo> </assembly> |
AW: Prüfen, ob Datei gesperrt ist
Was sagt der Taskmanager zu deinem Prozess (Spalte "UAC-Virtualisierung") und was sagt der Taskmanager zu dem anderen Prozess der sperren soll?
|
AW: Prüfen, ob Datei gesperrt ist
Bei beiden Programmen ist die UAC-Virtualisierung deaktiviert.
|
AW: Prüfen, ob Datei gesperrt ist
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 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