2010-10-15 14 views
6

Per scoprire qual è il client di posta elettronica predefinito, ho trovato le stesse informazioni più e più volte: Guarda la stringa predefinita in HKLM\Software\Clients\Mail. (Si veda ad esempio questo related question)Come e dove viene impostato esattamente il client di posta elettronica predefinito nel registro?

Tuttavia, questo non sembra essere vero per tutti i sistemi operativi e/o situazioni: Ho due macchine che eseguono Win7 64 bit, chiamiamoli A e B. A ha Outlook 2010 a 64 bit e Thunderbird 3 32 bit installato. B ha installato 32 bit di Outlook 2007 e 3 bit Thunderbird 3. Sia A che B hanno Thunderbird impostato come client di posta predefinito.

Tuttavia, lo stato del registro non è come mi aspettavo:

sulla macchina A, sia HKLM\Software\Clients\Mail e HKLM\Software\Wow6432Node\Clients\Mail hanno una stringa vuota come valore stringa predefinito. Su B, entrambe le chiavi contengono Microsoft Outlook come valore di stringa predefinito, che è chiaramente errato. Ulteriori indagini hanno rivelato che il valore corretto sembra essere scritto su HKCU\Software\Clients\Mail su entrambe le macchine.

Voglio che la mia applicazione la gestisca correttamente per tutti i casi. Sembra logico che Win7 ora registri un client di posta predefinito per ogni utente, ma sembra piuttosto incoerente. Quando si guarda alla pletora di informazioni che rimandano a HKLM\Software\Clients\Mail, sembra ovvio che le versioni precedenti di Windows lo gestissero in modo diverso e scrivessero sempre in quella posizione. Quindi quando è cambiato? Il valore errato sulla macchina B ha un significato? Se no, perché viene scritto lì in primo luogo? Il mix di client di posta elettronica a 64 bit e 32 bit sullo stesso computer cambia qualcosa?

Apprezzerei molto se qualcuno condividesse informazioni attendibili o documentazione che spieghi questo argomento! Forse c'è una funzione API Win32 che restituisce il valore corretto?

+0

"Win7 ora sembra in possesso di un client di posta predefinito per ogni utente" -> sì; "versioni precedenti di Windows gestivano diversamente" -> sì, mentre penso che fosse già il caso in Vista –

risposta

9

Questo articolo MSDN è utile?

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

registrazioni effettuate nella sottostruttura HKEY_CURRENT_USER hanno precedenza maggiore per l'utente della console di registrazioni effettuate nel HKEY_LOCAL_MACHINE corrispondente. Per i nuovi utenti sul sistema, vengono utilizzate le impostazioni memorizzate in HKEY_LOCAL_MACHINE.

Per Windows XP un articolo speciale: How to modify the default Web browser and e-mail client programmatically in Windows XP e How to implement a per-user default mail client in Windows XP?

Siamo spiacenti, non si può fare con l'API Win32.

+0

Grazie! Il tuo primo link appare esattamente come quello che stavo cercando e si applica a Win XP, Vista e 7. – Hatch

1

Per Windows 10, questo sembra essere diverso - vedere la discussione qui: https://superuser.com/q/1045349/176339

Citando il relativo paragrafo per la tua domanda, da papo 's risposta:

voci di registro per mailto protocollo sono sotto HKLM \ SOFTWARE \ Classes \ mailto e come è con altre classi, potrebbero essere sostituite da voci per CURRENT_USER, sotto HKCU \ SOFTWARE \ Classes \ mailto MA Ci sono stati cambiamenti nelle ultime versioni di Windows e ora ci sono più posti nel registro che sovrascriveranno le associazioni di shell dalle Classi. Inoltre, in caso di mailto sono obbligatori e quindi rendono inutili i valori Classes per mailto. La prossima linea di importanza è la chiave: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ mailto] , che a sua volta è sovrascritto da: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ Roaming \ OpenWith \ UrlAssociations \ mailto] che è anche utilizzato solo se non è sovrascritto da: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ shell \ Associazioni \ UrlAssociations \ mailto]

BUON LAVORO Microsoft :) valori sotto queste chiavi hanno lo stesso formato, una chiave UserChoice con una P rogId nomefile che punta alla chiave di associazione shell delle classi. Ma si può quasi dimenticare di modificare questi valori, poiché esiste anche il valore di hash. È una protezione contro tali modifiche del registro. L'utente DEVE cliccare su se stesso almeno una volta per selezionare un'app su una finestra di dialogo standard di apertura di Windows con finestra di dialogo, se si seleziona anche l'opzione Sempre, il valore di hash viene generato e la scelta viene memorizzata e scritta per durare due chiavi dall'elenco sopra. Un'altra opzione è quella di utilizzare le impostazioni come mostrato nella figura sopra. È una protezione contro app dannose, virus e app programmate male.

Per risolvere un problema con l'associazione mailto predefinita, è possibile eliminare mailto Keys da tutte queste posizioni, eccetto LOCAL_MACHINE. Windows li creerà nuovamente al successivo utilizzo del protocollo mailto.

Problemi correlati