Process.Start打开一个URL,得到一个Exception?

Tom*_* B. 5 .net c# winforms

我正在尝试使用谷歌甚至MSDN编写的简单方法打开URL.但由于未知原因,我得到如下异常:

例外

这是我的代码:

private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    ProcessStartInfo sInfo = new ProcessStartInfo("http://github.com/tbergeron/todoTxt");
    Process.Start(sInfo);
}
Run Code Online (Sandbox Code Playgroud)

知道为什么会失败吗?

非常感谢!

Fla*_*DOA 11

我在使用.NET Core尝试并获得Win32Exception时遇到了类似的问题,我这样处理:

var ps = new ProcessStartInfo("http://myurl")
{ 
    UseShellExecute = true, 
    Verb = "open" 
};
Process.Start(ps);
Run Code Online (Sandbox Code Playgroud)

  • 在.Net6.0上运行良好 (5认同)
  • 对我来说,Verb=“Open”不是必需的,没有它也可以工作。 (4认同)
  • 非常感谢,.NET Core 3 中没有其他功能。 (2认同)
  • [`UseShellExecute`](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.processstartinfo.useshellexecute?view=netframework-4.8#property-value) 默认情况下设置为 `true`在 .NET Framework 中和 .NET Core 中为“false”,我想这是异常的原因 (2认同)

Nic*_*rdt 9

这显然是机器特定的行为(http://devtoolshed.com/content/launch-url-default-browser-using-c).

链接的文章建议使用Process.Start("http://myurl")但捕捉Win32Exception和回落Process.Start("IExplore.exe", "http://myurl"):

try
{
  Process.Start("http://myurl");
}
catch (Win32Exception)
{
  Process.Start("IExplore.exe", "http://myurl");
}
Run Code Online (Sandbox Code Playgroud)

可悲的是,在尝试了几乎所有的东西之后,这是我在机器上所做的最好的事情.


Joh*_*nan -1

如果你想在默认浏览器中启动,请将 start 放在它前面:

new ProcessStartInfo("start http://github.com/tbergeron/todoTxt");
Run Code Online (Sandbox Code Playgroud)