AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen, ob Datei gesperrt ist

Ein Thema von amigage · begonnen am 13. Sep 2011 · letzter Beitrag vom 14. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#1

Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 12:21
Hallo,

ich weiß, dass dieses Thema bereits im Forum besprochen wurde, aber die Funktion IsFileInUse() unter http://www.delphipraxis.net/67631-ue...zt-werden.html funktioniert bei mir nicht.

Ich habe ein Testprogramm, dass bei mir die Datei test.txt exklusiv öffnet.

Code:
  try
    fs := TFileStream.Create('C:\test.txt', fmShareExclusive);
  except
    fs := nil; //damit fs.Free keine Exception wirft
    exit;
  end;
Versuche ich die Datei im Texteditor zu öffnen, bekomme ich die Meldung, dass sie nicht geöffnet werden kann.
Soweit so gut.

Mein zweites Programm soll das überprüfen:

Code:
if IsFileInUse('C:\test.txt') = false then
  Showmessage('Alles ok.')
else
  Showmessage('Die Datei ist gesperrt.');
Leider gibt das Programm immer Alles OK. aus.

Kann mir einer auf die Sprünge helfen, woran das liegen könnte?
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 12:34
Glaskugel auspack: Du hast Win7/Vista mit aktivem UAC und deine Anwendung hat kein passendes Manifest um die Virtualisierung des Dateisystems abzuschalten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#3

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 12:36
Mal ins Blaue geschossen: Windows 7 und UAC??
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 13:08
Ja, ich habe Win7 mit UAC.
Zitat:
hat kein passendes Manifest um die Virtualisierung des Dateisystems abzuschalten.
Möglich, ich nutze die in Delphi 2009 integrierte Funktion "Laufzeit-Theme aktivieren".
Was muss ich tun, um die Virtualisierung zu umgehen?
  Mit Zitat antworten Zitat
sott1981

Registriert seit: 13. Sep 2011
6 Beiträge
 
#5

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 13:16
Bin keine Profi warte aber auch grade auf ne Antwort.

Vielleicht passt das : Vista's User Account Control Handling



Musst ein bischen scrollen. Hoffe englsich passt...
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 13:44
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.
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 13:47
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:
<?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>
@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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 14:03
Was sagt der Taskmanager zu deinem Prozess (Spalte "UAC-Virtualisierung") und was sagt der Taskmanager zu dem anderen Prozess der sperren soll?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 14:16
Bei beiden Programmen ist die UAC-Virtualisierung deaktiviert.

Geändert von amigage (13. Sep 2011 um 14:22 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#10

AW: Prüfen, ob Datei gesperrt ist

  Alt 13. Sep 2011, 14:22
@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.
Dann war ich etwas flüchtig beim Lesen - also stehe ich nicht vor einem ähnlichen, sondern vor dem inversen Problem, möchte das hier aber nicht weiter detaillieren, es ist ja schließlich nicht meine Diskussion.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz