Frage

Ich möchte Ereignisse für bestimmte Ressourcen erstellen, die prozessübergreifend verwendet werden, und auf diese Ereignisse namentlich zugreifen.Das Problem scheint darin zu liegen, dass die Namen der Ereignisse allen Anwendungen bekannt sein müssen, die darauf verweisen.

Gibt es vielleicht eine Möglichkeit, eine Liste der Namensereignisse im System abzurufen?

Mir ist bewusst, dass ich möglicherweise einige Standardnamen verwende, aber dies scheint im Hinblick auf zukünftige Erweiterbarkeit eher unflexibel zu sein (alle Anwendungen würden eine Neukompilierung erfordern).


Ich fürchte, ich kann ZwOpenDirectoryObject nicht einmal in Betracht ziehen, da es angeblich Windows XP oder höher erfordert und daher nicht in Frage kommt.Danke aber für den Vorschlag.

Beim Shared Memory bin ich etwas unsicher, da ich es bisher noch nicht ausprobiert habe.Ich schätze, ich könnte in diesem Bereich etwas lesen.Ein kleines Problem stellen Konfigurationsdateien und die Registrierung dar, da diese unter Vista aufgrund von Zugriffsproblemen häufig ausfallen.Ich habe ein bisschen Angst, dass Shared Memory das gleiche Problem haben wird.

Die Idee mit ProcessExplorer klingt vielversprechend.Kennt jemand eine API, die zum Auflisten von Ereignissen für einen Prozess verwendet werden könnte?Und funktioniert es ohne Administratorrechte?


Danke für die Abklärung.

Es gibt nicht wirklich einen Masterprozess.Es handelt sich eher um eine Treiber-DLL, die von verschiedenen Prozessen verwendet wird und deren Ereignisse zum „Sperren“ der von diesen Prozessen verwendeten Ressourcen verwendet werden.

Ich denke darüber nach, einen zentralen Dienst einzurichten, der auch unter Vista über ausreichende Zugriffsrechte verfügt.Es wird sicherlich die Dinge verkomplizieren, aber es könnte das Einzige sein, was noch mit Sicherheitsproblemen zu kämpfen hat.

War es hilfreich?

Lösung

Verwechseln Sie nicht den Benutzermodus ZwOpenDirectoryObject mit dem Kernelmodus ZwOpenDirectoryObject – der Kernelmodus-API (http://msdn.microsoft.com/en-us/library/ms800966.aspx) scheint zwar erst ab XP verfügbar zu sein, die User-Mode-Version dürfte aber spätestens seit NT 4 verfügbar sein.Wie auch immer, ich würde die Verwendung von ZwOpenDirectoryObject nicht empfehlen.

Warum sollten Konfigurationsdateien und Registrierungsschlüssel unter Vista fehlschlagen?Natürlich müssen Sie die Sicherheitseinstellungen richtig einstellen – aber das müssten Sie auch für Ihre benannten Ereignisse tun – daher sollte es hier keinen großen Unterschied geben.Vielleicht sollten Sie uns etwas mehr Details über die Art Ihrer Prozesse mitteilen – laufen sie alle innerhalb derselben Anmeldesitzung oder werden sie sogar von unterschiedlichen Benutzern ausgeführt?Und gibt es einen Masterprozess oder wer erstellt die Ereignisse überhaupt?

Ehrlich gesagt finde ich die Process Explorer-Idee eher nicht besonders gut.Trotz der Tatsache, dass Sie dies wahrscheinlich nicht erreichen können, ohne undokumentierte APIs und/oder einen Gerätetreiber zu verwenden, glaube ich nicht, dass ein Prozess in der Handle-Tabelle eines anderen Prozesses herumstöbern sollte, nur um die Namen von einigen herauszufinden Kernel-Objekte.Und natürlich gelten auch hier die gleichen Sicherheitsprobleme.

Andere Tipps

Nein, es gibt keine Möglichkeit, benannte Ereignisse aufzulisten.Sie könnten alle Objekte im jeweiligen Objektmanagerverzeichnis mit ZwOpenDirectoryObject auflisten und dann nach Ereignissen filtern.Diese Routine ist jedoch nicht dokumentiert und sollte daher nicht ohne triftigen Grund verwendet werden.

Warum nicht einen separaten Mechanismus verwenden, um die Ereignisnamen zu teilen?Sie können sie in einer Konfigurationsdatei, einem Registrierungsschlüssel oder vielleicht sogar im gemeinsam genutzten Speicher auflisten.

Process Explorer ist in der Lage, alle benannten Ereignisse eines bestimmten Prozesses aufzuzählen.Sie könnten die gesamte Prozessliste durchgehen und etwas Ähnliches tun, obwohl ich jetzt eine Ahnung habe, welche API zum Abrufen der Liste verwendet wird ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top