我想为Windows编写一个自定义的发送邮件处理程序,包括一个简单的MAPI提供程序。
在Windows上,当前的MAPI提供程序存储在
HKCU/SOFTWARE/Clients/Mail
和
HKLM/SOFTWARE/Clients/Mail
(前者优先于后者)。但是我发现没有Windows 10 UI可以更改此注册表设置。特别是,当用户更改设置->默认应用程序->电子邮件时,Windows将更改mailto关联,这是一个单独的设置,但是MAPI注册表项保持不变。用户选择其他默认电子邮件应用程序时,是否可以更改MAPI提供程序或执行自定义代码?
这些是我安装的注册表项,以使Windows知道我的MAPI提供程序:
HKLM\SOFTWARE\Classes\CustomMapi.Mailto Type="string" Value="URL:MailTo Protocol"/>
HKLM\SOFTWARE\Classes\CustomMapi.Mailto Name="URL Protocol" Type="string" Value=""/>
HKLM\SOFTWARE\Classes\CustomMapi.Mailto\DefaultIcon Type="string" Value="[TARGETDIR]mailtohandler.exe,-1"/>
HKLM\SOFTWARE\Classes\CustomMapi.Mailto\shell\open\command Type="string" Value='"[TARGETDIR]mailtohandler.exe" "%1"'/>
HKLM\SOFTWARE\RegisteredApplications Name="CustomMapi" Type="string" Value="SOFTWARE\Clients\Mail\CustomMapi\Capabilities"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi Type="string" Value="CustomMapi"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi Name="DllPath" Type="string" Value="[TARGETDIR]custommapi.dll"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Capabilities Name="ApplicationName" Type="string" Value="CustomMapi"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Capabilities Name="ApplicationDescription" Type="string" Value="A custom MAPI provider."/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Capabilities\StartMenu Name="Mail" Type="string" Value="CustomMapi"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Capabilities\URLAssociations Name="mailto" Type="string" Value="CustomMapi.Mailto"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\DefaultIcon Type="string" Value="[TARGETDIR]mailtohandler.exe,-1"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Protocols\mailto Type="string" Value="URL:MailTo Protocol"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Protocols\mailto Name="EditFlags" Type="integer" Value="2"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Protocols\mailto Name="URL Protocol" Type="string" Value=""/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Protocols\mailto\DefaultIcon Type="string" Value="[TARGETDIR]mailtohandler.exe,-1"/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\Protocols\mailto\shell\open\command Type="string" Value='"[TARGETDIR]mailtohandler.exe" "%1"'/>
HKLM\SOFTWARE\Clients\Mail\CustomMapi\shell\open\command Type="string" Value='"[TARGETDIR]mailtohandler.exe"'/>