![]() |
Owner eines Mutex-Handles herausfinden?
Hi,
wie kann man herausfinden, zu welchem Prozess/Thread/Fenster ein mit CreateMutex erzeugtes Handle gehört? :gruebel: |
Re: Owner eines Mutex-Handles herausfinden?
System-Handles gehoeren grundsaetzlich nur dem Prozess der sie erstellt hat. Gibst du den Handle der in Prozess A erstellt wurde an Prozess B, kann der damit herzlich wenig anfangen da er bei der Benutzung wahrscheinlich den fehler "ungueltiger Handle" bekommt, oder aber faelschlicherweise ein falsches objekt des gleichen typs (mutex z.b.) verwendet wird. Somit ist es voellig ueberfluessig herauszufinden wer den Handle erstellt hat, da er sowieso nur fuer den jeweiligen Prozess sichtbar ist.
|
Re: Owner eines Mutex-Handles herausfinden?
Okay, die Frage war falsch gestellt. Wie findet man heraus, welcher Prozess einen Mutex-Handle mit einem bestimmten Namen angelegt hat? Merkt sich das Windows überhaupt?
|
Re: Owner eines Mutex-Handles herausfinden?
Wie gesagt, ein Handle ist nur gueltig fuer den Prozess in dem er erstellt wurde. Was du meinst ist das Objekt auf das ein Handle zeigt. Im Falle von Mutexes laesst sich leider nicht ermitteln welcher Prozess/Thread das Objekt erstellt hat.
|
Re: Owner eines Mutex-Handles herausfinden?
Verdammt! Dann muss ich wohl hoffen, dass niemand sein Formular "TForgeParent" nennt und FindWindow benutzen. Trotzdem vielen Dank fürs Aufklären :mrgreen:
|
Re: Owner eines Mutex-Handles herausfinden?
Moin Dani,
um sicherzustellen, dass ich an solchen Stellen einen eindeutigen String habe, nehme ich dafür immer eine GUID, die Du Dir mit STRG-SHIFT-G in der IDE erstellen lassen kannst. |
Re: Owner eines Mutex-Handles herausfinden?
Die NT Native API bietet Möglichkeiten um an die Informationen zu kommen, die du willst. Da sie aber nicht (lies: schlecht) dokumentiert und weitgehend (lies: >90%) inoffiziell ist, mußt du mit Inkompatibilitäten rechnen. Das Handle gehört übrigens zwar dem Prozess (also dieses bestimmte Handle mit diesem bestimmten Wert), aber ein Mutex ist ein Kernelobjekt (Mutant), daher kann man Informationen über ihn erhalten. Such mal im WWW nach WinObj (von SysInternals) und WinObjEx ... und dann gibt's noch eine Variante von MS. Die zeigen dir, was geht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 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