Pregunta

Me gustaría crear eventos para ciertos recursos que se utilizan en varios procesos y acceder a estos eventos por nombre.El problema parece ser que los nombres de los eventos deben ser conocidos por todas las aplicaciones que hacen referencia a ellos.

¿Existe tal vez alguna manera de obtener una lista de eventos de nombres en el sistema?

Soy consciente de que podría utilizar algunos nombres estándar, pero parece bastante inflexible con respecto a la extensibilidad futura (todas las aplicaciones requerirían una recompilación).


Me temo que ni siquiera puedo considerar ZwOpenDirectoryObject, porque se describe que necesita Windows XP o superior, por lo que está fuera de discusión.Gracias por la sugerencia.

Estoy un poco inseguro acerca de la memoria compartida porque no la he probado hasta ahora.Supongo que podría leer un poco en esa área.Los archivos de configuración y el registro son un pequeño problema, porque tienden a fallar con Vista debido a problemas de acceso.Tengo un poco de miedo de que la memoria compartida tenga el mismo problema.

La idea de ProcessExplorer parece prometedora.¿Alguien conoce una API que pueda usarse para enumerar eventos de un proceso?¿Y funciona sin derechos administrativos?


Gracias por la aclaración.

Realmente no existe un proceso maestro.Es más bien un controlador dll que se usa en diferentes procesos y los eventos se usarían para "bloquear" los recursos utilizados por estos procesos.

Estoy pensando en crear un servicio central que tenga suficientes derechos de acceso incluso en Vista.Sin duda complicará las cosas, pero podría ser lo único que queda para afrontar los problemas de seguridad.

¿Fue útil?

Solución

No mezcle el modo de usuario ZwOpenDirectoryObject con el modo kernel ZwOpenDirectoryObject: la API del modo kernel (http://msdn.microsoft.com/en-us/library/ms800966.aspx) de hecho parece estar disponible solo a partir de XP, pero la versión en modo de usuario debería estar disponible al menos desde NT 4.De todos modos, no recomendaría usar ZwOpenDirectoryObject.

¿Por qué deberían fallar los archivos de configuración y las claves de registro en Vista?Por supuesto, debe tener la configuración de seguridad correcta, pero también tendrá que hacerlo para los eventos nombrados, por lo que no debería haber una gran diferencia aquí.Tal vez debería contarnos más detalles sobre la naturaleza de sus procesos: ¿se ejecutan todos dentro de la misma sesión de inicio de sesión o incluso se ejecutan como usuarios diferentes?¿Y existe algún proceso maestro o quién crea los eventos en primer lugar?

Francamente, tiendo a encontrar que la idea de Process Explorer no es muy buena.A pesar de que probablemente no podrá lograrlo sin utilizar API no documentadas y/o un controlador de dispositivo, no creo que un proceso deba buscar en la tabla de identificadores de otro proceso solo para descubrir los nombres de algunos. objetos del núcleo.Y, por supuesto, se repiten los mismos problemas de seguridad.

Otros consejos

No, no existe ninguna posibilidad de enumerar eventos con nombre.Puede enumerar todos los objetos en el directorio del administrador de objetos respectivo usando ZwOpenDirectoryObject y luego filtrar por eventos.Pero esta rutina no está documentada y, por lo tanto, no debe utilizarse sin una buena razón.

¿Por qué no utilizar un mecanismo independiente para compartir los nombres de los eventos?Podrías enumerarlos en un archivo de configuración, una clave de registro o incluso en la memoria compartida.

Explorador de procesos es capaz de enumerar todos los eventos nombrados celebrados por algún proceso específico.Podrías revisar toda la lista de procesos y hacer algo similar, aunque ahora tengo una idea de qué API se utiliza para obtener la lista...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top