2010-09-04 15 views
5

Aquí estoy algo oscuro: las búsquedas no parecen ser productivas en esto. Quiero crear un programa .NET para supervisar la instalación y desinstalación de fuentes. Si algo está instalado o desinstalado, quiero ejecutar un programa para hacer algo.Monitorear Instalar/Desinstalar fuentes en Windows

Pensé que tal vez un Servicio de Windows, pero no he llegado muy lejos con la idea de cómo monitorear las fuentes. ¿Es este el camino correcto? Si es así, ¿qué estoy pasando por alto? Si no, ¿hay una forma diferente de hacer esto?

Respuesta

2

Se puede monitorear el registro de los cambios de fuente. Mirando el monitor de procesos veo que almacena la información aquí en Windows 7.

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Fuentes

+0

¿Qué implicaría esto? ¿Ejecuta una consulta en contra de esa clave cada segundo para ver si el '.Count' ha cambiado? –

+0

Si la aplicación se está ejecutando, obtener un evento sería lo mejor. Luego, después de obtener el evento, puede consultar el registro para verificar los cambios. Al iniciar, puede enumerar las fuentes en el registro para verificar también los cambios. –

1

puede crear un gancho para el mensaje de ventana WM_FONTCHANGE.

cheque este artículo Using Window Messages to Implement Global System Hooks in C#

+0

¿Windows envía este mensaje en la instalación/desinstalación? O, supongo que con mayor precisión, ¿Windows usa 'AddFontResource' o' RemoveFontResource'? –

+0

@Otaku, compruebe el enlace Msdn desde la respuesta 'Una aplicación que agrega o elimina fuentes del sistema (por ejemplo, mediante el uso de la función AddFontResource o RemoveFontResource) debe enviar este mensaje a todas las ventanas de nivel superior. – RRUZ

+0

Lo hice. Desafortunadamente, 'AddFontResource' no instala una fuente de forma permanente. Desde http://msdn.microsoft.com/en-us/library/dd183326(VS.85).aspx indica * Esta función instala la fuente solo para la sesión actual. Cuando el sistema se reinicia, la fuente no estará presente. Para tener la fuente instalada incluso después de reiniciar el sistema, la fuente debe aparecer en el registro *. Por lo tanto, monitorear las adiciones de fuentes de esta manera no revelaría qué fuentes se han instalado realmente. –

0

No sé mucho acerca de Fuentes, así que podría ser confundido pero creo que están todos instalados en% windir% \ Fonts.

Si ese es el caso, debe poder configurar un FileSystemWatcher en su servicio para ver ese directorio en busca de cambios.

+0

La mayoría son, pero no todos (Vista/7 permite que las fuentes se instalen fuera de% windir% \ Fonts). –

Cuestiones relacionadas