2010-10-15 12 views
6

Para averiguar cuál es el cliente predeterminado de correo electrónico, encontré la misma información una y otra vez: Mire la cadena predeterminada en HKLM\Software\Clients\Mail. (Véase, por ejemplo, este related question)¿Cómo y dónde exactamente se establece el cliente de correo electrónico predeterminado en el registro?

Sin embargo, esto no parece ser cierto para todos los sistemas operativos y/o situaciones: Tengo dos máquinas que funcionan con Win7 de 64 bits, llamémoslos A y B. A tiene Outlook 2010 de 64 bits y Thunderbird 3 de 32 bits instalado. B tiene Outlook 2007 32bit y Thunderbird 3 32bit instalados. Tanto A como B tienen configurado Thunderbird como su cliente de correo predeterminado.

Sin embargo, el estado del registro no es como esperaba:

en la máquina A, tanto HKLM\Software\Clients\Mail y HKLM\Software\Wow6432Node\Clients\Mail tienen una cadena vacía como el valor de cadena predeterminado. En B, ambas claves contienen Microsoft Outlook como el valor de cadena predeterminado, lo que es claramente incorrecto. La investigación adicional reveló que el valor correcto parece estar escrito en HKCU\Software\Clients\Mail en ambas máquinas.

Quiero que mi aplicación maneje esto correctamente para todos los casos. Tiene bastante sentido que Win7 ahora parezca tener un cliente de correo predeterminado por separado para cada usuario, pero parece bastante inconsistente. Al observar la gran cantidad de información que apunta a HKLM\Software\Clients\Mail, parece obvio que las versiones anteriores de Windows manejaron esto de manera diferente y siempre escribieron en esa ubicación. ¿Cuándo cambió esto? ¿El valor incorrecto en la máquina B tiene algún significado? Si no, ¿por qué se escribe allí en primer lugar? ¿La combinación de clientes de correo electrónico de 64 bits y 32 bits en la misma computadora cambia algo?

¡Agradecería mucho si alguien compartiera información confiable o documentación que explique este tema! Tal vez hay una función de API Win32 que devuelve el valor correcto?

+0

"Win7 ahora parece contener un cliente de correo predeterminado por separado para cada usuario" -> sí; "las versiones anteriores de Windows manejaron esto de manera diferente" -> sí, mientras que creo que ya era el caso en Vista –

Respuesta

9

¿Le puede ayudar este artículo de MSDN?

How to Register an Internet Browser or E-mail Client With the Windows Start Menu

inscripciones realizadas en el subárbol HKEY_CURRENT_USER tienen mayor prioridad para el usuario de la consola de inscripciones realizadas en el HKEY_LOCAL_MACHINE correspondiente. Para los nuevos usuarios en el sistema, se utilizan las configuraciones almacenadas en HKEY_LOCAL_MACHINE.

Para Windows XP un artículo especial: How to modify the default Web browser and e-mail client programmatically in Windows XP y How to implement a per-user default mail client in Windows XP?

Lo sentimos, no podemos ayudarle con la API de Win32.

+0

¡Gracias! Su primer enlace se ve exactamente como lo que estaba buscando y se aplica a Win XP, Vista y 7. – Hatch

1

Para Windows 10, esto parece ser diferente - véase la discusión aquí: https://superuser.com/q/1045349/176339

Citando el párrafo pertinente de tu pregunta, desde papo 's respuesta:

Las entradas del registro de protocolo mailto son bajo HKLM \ SOFTWARE \ Classes \ mailto y como lo es con otras clases, podrían ser anulados por las entradas para CURRENT_USER, bajo HKCU \ SOFTWARE \ Classes \ mailto PERO Hubo cambios en las versiones recientes de Windows y ahora, hay más lugares en el registro que anularán aún más las asociaciones de shell de las clases. Además, en el caso de mailto, son obligatorios, por lo que los valores de Classes para el correo son inútiles. siguiente en la lista es de importancia clave: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ mailto] que a su vez está anulado por: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ Roaming \ OpenWith \ UrlAssociations \ mailto] que también se utiliza sólo si no es anulado por: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ Shell \ Asociaciones \ UrlAssociations \ mailto]

BUEN TRABAJO Microsoft :) Valores bajo estas Teclas tienen el mismo formato, una Elección de usuario clave con un P rogId valuename apuntando a la asociación de shell Clave de Clases. Pero todos pueden olvidarse de editar estos valores, ya que también está el valor de Hash. Es una protección contra tales ediciones de registro. El usuario DEBE hacer clic al menos una vez para seleccionar una aplicación en una ventana emergente estándar de Windows Open With, si también marca la opción Always, se genera el valor Hash y la opción se recuerda y escribe en las dos últimas claves de la lista anterior. Otra opción es usar la configuración como se muestra en la imagen de arriba. Es una protección contra aplicaciones maliciosas, virus y malas aplicaciones programadas.

Para solucionar un problema con la asociación predeterminada de mailto, puede eliminar mailto Keys desde todas estas ubicaciones, excepto LOCAL_MACHINE. Windows los volverá a crear el próximo uso del protocolo mailto.

Cuestiones relacionadas