Question

Je souhaite créer des événements pour certaines ressources utilisées dans divers processus et accéder à ces événements par leur nom.Le problème semble être que les noms des événements doivent être connus de toutes les applications qui y font référence.

Existe-t-il peut-être un moyen d'obtenir une liste des événements de noms dans le système ?

Je suis conscient que je pourrais utiliser certains noms standards, mais cela semble plutôt rigide en ce qui concerne l'extensibilité future (toute application nécessiterait une recompilation).


J'ai bien peur de ne même pas pouvoir envisager ZwOpenDirectoryObject, car il est décrit comme nécessitant Windows XP ou supérieur, donc c'est hors de question.Merci pour la suggestion cependant.

Je suis un peu incertain concernant la mémoire partagée, car je ne l'ai pas essayé jusqu'à présent.Je pourrais faire quelques lectures dans ce domaine, je suppose.Les fichiers de configuration et le registre posent un léger problème, car ils ont tendance à échouer avec Vista en raison de problèmes d'accès.J'ai un peu peur que la mémoire partagée ait le même problème.

L'idée avec ProcessExplorer semble prometteuse.Quelqu'un connaît-il une API qui pourrait être utilisée pour répertorier les événements d'un processus ?Et est-ce que ça marche sans droits administratifs ?


Merci pour la clarification.

Il n’y a pas vraiment de processus maître.Il s'agit plutôt d'une DLL de pilote utilisée par différents processus et les événements seraient utilisés pour "verrouiller" les ressources utilisées par ces processus.

Je réfléchis à la mise en place d'un service central disposant de droits d'accès suffisants même sous Vista.Cela compliquera certainement les choses, mais cela pourrait être la seule chose qui reste face aux problèmes de sécurité.

Était-ce utile?

La solution

Ne confondez pas le mode utilisateur ZwOpenDirectoryObject avec le mode noyau ZwOpenDirectoryObject -- l'API du mode noyau (http://msdn.microsoft.com/en-us/library/ms800966.aspx) semble en effet disponible à partir de XP uniquement, mais la version en mode utilisateur devrait être disponible au moins depuis NT 4.Quoi qu'il en soit, je ne recommanderais pas d'utiliser ZwOpenDirectoryObject.

Pourquoi les fichiers de configuration et les clés de registre échouent-ils sous Vista ?Bien sûr, vous devez définir les paramètres de sécurité correctement - mais vous devrez également le faire pour vos événements nommés - il ne devrait donc pas y avoir de grande différence ici.Peut-être devriez-vous nous donner plus de détails sur la nature de vos processus : s'exécutent-ils tous au cours de la même session de connexion ou s'exécutent-ils même en tant qu'utilisateurs différents ?Et existe-t-il un processus principal ou qui crée les événements en premier lieu ?

Franchement, j’ai tendance à trouver que l’idée de Process Explorer n’est pas très bonne.Malgré le fait que vous ne pourrez probablement pas y parvenir sans utiliser des API non documentées et/ou un pilote de périphérique, je ne pense pas qu'un processus devrait fouiller dans la table de gestion d'un autre processus juste pour découvrir les noms de certains. objets du noyau.Et bien sûr, les mêmes problèmes de sécurité s’appliquent à nouveau.

Autres conseils

Non, il n'existe aucune possibilité d'énumérer les événements nommés.Vous pouvez énumérer tous les objets dans le répertoire du gestionnaire d'objets respectif à l'aide de ZwOpenDirectoryObject, puis filtrer les événements.Mais cette routine n’est pas documentée et ne doit donc pas être utilisée sans raison valable.

Pourquoi ne pas utiliser un mécanisme distinct pour partager les noms des événements ?Vous pouvez les répertorier dans un fichier de configuration, une clé de registre ou peut-être même dans une mémoire partagée.

Explorateur de processus est capable d'énumérer tous les événements nommés détenus par un processus spécifique.Vous pouvez parcourir toute la liste des processus et faire quelque chose de similaire, même si j'ai maintenant une idée de l'API utilisée pour obtenir la liste...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top