AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Prozesse oder Anwendungen ermitteln, die eine Datei benutzen

Prozesse oder Anwendungen ermitteln, die eine Datei benutzen

Ein Thema von PainInYourBrain · begonnen am 26. Okt 2006 · letzter Beitrag vom 16. Jan 2008
Antwort Antwort
Seite 4 von 4   « Erste     234
daPimP

Registriert seit: 26. Okt 2006
25 Beiträge
 
#31

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 30. Mai 2007, 12:58
Zitat:
Für UserMode-Prozesse sind nur die anderen Felder interessant (insbes. ProcessId/Handle).
Wie gesagt, diese Dinge sind klar. Mir fehlt jetzt noch der Schritt,
aus dem Handle 1234 des Prozesses ABC den Namen des Handles herauszubekommen.

In einer Liste so in etwa:
Code:
Type      Handle Name

File      1234    C:\Windows\system32
File      321     \Device\KsecDD
Key       3232    HKLM\Software\...
Semaphore 1123    \BaseNamedObjects\shell.{...}
Event     123 
....
Idee?
watch out ... SySSnapper... coming soon
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#32

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 30. Mai 2007, 13:24
NtQueryObject mit ObjectNameInformation
  Mit Zitat antworten Zitat
daPimP

Registriert seit: 26. Okt 2006
25 Beiträge
 
#33

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 30. Mai 2007, 19:25
Für alle die Mitlesen, hier noch ein paar Links.

Delphi Praxis

und

dateifreigabe

Zusammenfassung:
Info des Autors von Unlocker:
Zitat:
You need to first find all locks opened by a system using undocumented functions such as ZwQueryObject and NtQueryObject.

Then to get informations you need you write a device driver since some informations are only accessible at the device driver level. There is no device driver specific function, it is just that you need to run in a driver to have maximum access to the system.
von Nico zum Thema Treiber:
Zitat:
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.
und

Ironie des Schicksals, nachdem ich immer wieder ein kleines Stück der Lösung näher gerutscht war
und es nun auch geschafft hatte (Danke CCRDude), gibts das schon relativ kompakt im Netz.
Nicht so toll wie meine Lösung , aber dafür OHNE Treiber.

für die Copy&Paste 'ler der Delphi Source.
experts exchange
watch out ... SySSnapper... coming soon
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#34

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 31. Mai 2007, 06:19
Zitat von daPimP:
für die Copy&Paste 'ler der Delphi Source.
experts exchange
Und für alle, die kein experts-exchange login haben: Habe den Code als Attachment angehängt.
Angehängte Dateien
Dateityp: txt exp_331.txt (7,8 KB, 101x aufgerufen)
Thomas
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#35

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 31. Mai 2007, 09:21
Randbemerkung: "SysErrorMessage(GetLastError())" ist nicht korrekt, richtig wäre "SysErrorMessage(RtlNtStatusToDosError(Status) )" gewesen.

Zitat von daPimP:
aber dafür OHNE Treiber.
Viel Spaß beim Testen auf Live-Systemen...
  Mit Zitat antworten Zitat
daPimP

Registriert seit: 26. Okt 2006
25 Beiträge
 
#36

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 31. Mai 2007, 15:04
@Nicode: Ja da hast du verdammt recht. Aber als Basis ist das durchaus nutzvoller Quellcode.
Bei meinen Proben war die Chance, das das Programm nicht hängt 1:10. Mahlzeit.
watch out ... SySSnapper... coming soon
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 11. Jul 2007, 14:18
@toms: Wie benutzt man den Code? Also wie würde ein Beispielaufruf aussehen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#38

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 16. Jan 2008, 14:58
Zitat von NicoDE:
Randbemerkung: "SysErrorMessage(GetLastError())" ist nicht korrekt, richtig wäre "SysErrorMessage(RtlNtStatusToDosError(Status) )" gewesen.

Zitat von daPimP:
aber dafür OHNE Treiber.
Viel Spaß beim Testen auf Live-Systemen...
Meinst es würde helfen, wenn OpLocks abgeschaltet sind?
Andreas
Monads? Wtf are Monads?
  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 02:35 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