我当前正在使用此方法,它可以完美地工作:

public static void CreateEmailInDefaultMailEditor(string to, string subject, string body)
{
    Process.Start($"mailto:{to}?subject={subject}&body={body}");
}


然后,我在另一台计算机上对其进行了尝试,并且该计算机也可以在该计算机上工作,但是速度非常慢(超过一分钟即可打开我的邮件编辑器!)。
我调试了Process.Start(在System.dll中)方法,发现问题出在最后,原因是NativeMethod.ShellExecuteEx方法运行得非常慢。

我还注意到,指定了应打开以发送电子邮件的程序的名称

public static void CreateEmailInOutlook(string to, string subject, string body)
{
    Process.Start("outlook.exe", $"mailto:{to}?subject={subject}&body={body}");
}


解决了问题,但是并不能解释为什么它可以在计算机上正常工作,而不能在另一台计算机上正常工作,并且不能完成相同的事情:不指定程序会自动打开默认程序。

因此,问题很简单:为什么出现这种现象以及如何解决?

最佳答案

感谢您的回答和评论。

这里是问题的小更新,可能还有解决方案(我仍然不确定是什么问题):
我可以在我所测试的部门的每台计算机上重现该问题(而不仅仅是我所提问题中的两台)。
几天后,我注意到一切再次恢复正常。我没有更改程序代码,也没有停用防病毒软件。

我的问题中没有提到的(我认为这并不重要)是所有计算机都是新计算机。而且我认为这可能是问题所在:Windows具有索引服务,并且我可以想象一开始可能要花几天的时间才能扫描整个计算机。在这种情况下,搜索默认的邮件管理器可能会花费很长时间,但是一旦索引服务完成工作,搜索默认的邮件管理器就会很快。

08-03 13:09