AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Prozess finden, der Datei offen hat

Prozess finden, der Datei offen hat

Ein Thema von hoika · begonnen am 28. Sep 2010 · letzter Beitrag vom 5. Nov 2010
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 14:43
Habs: http://www.delphipraxis.net/53005-da...freigeben.html
Zitat von dir:
Zitat:
Indem man die Handles des Prozesses auflistet und deren Namen findet. Das geht zwar auch ohne Treiber, aber nur in einem bestimmten Fall. Daher vermutlich der Treiber.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#12

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 14:51
Habs: http://www.delphipraxis.net/53005-da...freigeben.html
Zitat von dir:
Zitat:
Indem man die Handles des Prozesses auflistet und deren Namen findet. Das geht zwar auch ohne Treiber, aber nur in einem bestimmten Fall. Daher vermutlich der Treiber.
Puh, mein früheres Ich

Aber Nico hat recht, und zwar hier:

Zitat von Olli:
ZwQuerySystemInformation und ZwQueryObject[...]
Der Treiber ist deswegen notwendig, weil die Abfrage des Namens eines Dateiobjektes (Dateien, Verzeichnisse, Pipes, MailSlots, ...) bei synchronisierten Objekten solange benötigt bis die aktuelle Operation abgeschlossen ist (und das kann ewig dauern). Da zum Beispiel der Service Control Manager (SCM) Pipes verwendet um mit Service-DLLs zu kommunizieren, gibt es eine Menge solcher Objekte. Zudem gibt es aus dem Benutzermodus keinen sicheren Weg um Dateien von Pipes und/oder MailSlots zu untercheiden. Der Treiber löst das erste Problem üblicherweise dadurch, dass er den IRP zur Abfrage des Objekts selbst erzeugt. Das zweite Problem kann ebenso im Treiber (mit Hilfe des IFS-Kits) gelöst werden (MailSlots oder Pipes sind an Flags erkennbar).

Kurz, für eine saubere Lösung kommt man nicht um einen Treiber herum.
... das war der Hasenfuß.

I stand corrected
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
42.982 Beiträge
 
Delphi 12 Athens
 
#13

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 14:57
Aber die neue Suche finde ich schröcklich ...
für mich findet die och selten was

google: "site:delphipraxis.net suchwort(e)"
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 15:10
Aber Nico hat recht, und zwar hier:

Zitat von Olli:
ZwQuerySystemInformation und ZwQueryObject[...]
Der Treiber ist deswegen notwendig, weil die Abfrage des Namens eines Dateiobjektes (Dateien, Verzeichnisse, Pipes, MailSlots, ...) bei synchronisierten Objekten solange benötigt bis die aktuelle Operation abgeschlossen ist (und das kann ewig dauern). Da zum Beispiel der Service Control Manager (SCM) Pipes verwendet um mit Service-DLLs zu kommunizieren, gibt es eine Menge solcher Objekte. Zudem gibt es aus dem Benutzermodus keinen sicheren Weg um Dateien von Pipes und/oder MailSlots zu untercheiden. Der Treiber löst das erste Problem üblicherweise dadurch, dass er den IRP zur Abfrage des Objekts selbst erzeugt. Das zweite Problem kann ebenso im Treiber (mit Hilfe des IFS-Kits) gelöst werden (MailSlots oder Pipes sind an Flags erkennbar).

Kurz, für eine saubere Lösung kommt man nicht um einen Treiber herum.
... das war der Hasenfuß.
Genau die Begründung meinte ich. Also hatte ich doch Recht, dass man für eine saubere Lösung nicht um einen Treiber drum rum kommt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#15

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 15:50
Genau die Begründung meinte ich. Also hatte ich doch Recht, dass man für eine saubere Lösung nicht um einen Treiber drum rum kommt.
Hattest du. Die Begründung sollte man ganz groß ausdrucken und irgendwo aufhängen, denn sie relativiert das "eigentlich reicht die Native API"
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 21:47
Ich habe es für mich mal notiert: http://www.michael-puff.de/Artikel/FileUnlocker.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#17

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 23:08
Wie löst das eigentlich Handle?

...oder ist das an der Frage vorbei bzw. unvollständig?
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#18

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 23:13
Wie löst das eigentlich Handle?

...oder ist das an der Frage vorbei bzw. unvollständig?
Müßte man gucken. Sysinternals packt Treiber immer als Ressource in die EXE. Wenn das nicht der Fall ist, hat Mark vielleicht durch seinen Einblick bei MS Zugriff auf einen Trick der das Problem aus Nico's Hinweis umgeht. Zeit es zu reversen habe ich aber nicht - arbeite derzeit an WinDirStat.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#19

AW: Prozess finden, der Datei offen hat

  Alt 4. Nov 2010, 23:21
Habe mal grob drübergeschaut. Ist in den Ressourcen. Erstmal ist die x64-Version mit enthalten und zudem noch mindestens einen x64-Treiber enthält und die (äußere) 32bit-EXE enthält ebenfalls einen 32bit-Treiber.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#20

AW: Prozess finden, der Datei offen hat

  Alt 5. Nov 2010, 09:55
Ich glaube ab Vista (oder Win7) gibt es eine neue API, die es ermöglicht den Namen und Grund einer Dateisperrung herauszufinden. Dazu muss aber der Prozess, der die Datei öffnet, diesen Grund auch angeben. Leider ist mir grad entfallen, wie die API heißt.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:53 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