【发布时间】:2017-11-25 21:07:01
【问题描述】:
在早期版本的 Windows(8 和 10 之前)中。你可以简单地执行这段代码:
class Program
{
static void Main(string[] args)
{
TryStart("myapp:", "https://www.google.com");
}
private static void TryStart(String url, String raw = "")
{
try
{
if (!String.IsNullOrEmpty(url))
{
Process.Start(url);
}
}
catch
{
if (!String.IsNullOrEmpty(raw))
{
Process.Start(raw);
}
}
}
}
它会完美运行。如果该程序不存在,它将打开网页。如果程序确实存在,它会打开它。
但是,在 Windows 8 和 10 中,如果该程序不存在,您将收到此消息:
而且该网站永远不会打开。有没有其他办法解决这个问题?
【问题讨论】:
-
要求的结果是什么?打开特定的浏览器或特定的应用程序?或者也许只是网址?因为您所描述的是 Win 10 中的默认结果,这是有道理的。您正在尝试打开应用程序,而不是启动浏览器。
-
您没有阅读问题。 “如果程序不存在,它会打开网页。如果程序确实存在,它会打开它。”它适用于 Windows 7,因为当时没有内置应用商店。
-
在windows 7中,如果你试图打开一个不存在的进程/协议,你会被抛出一个异常,所以上面的sn-p会打开网页。但是,该异常不会在 Windows 8 和 10 上引发,因为 Microsoft 通过重定向到该应用商店弹出窗口来规避该问题。
-
我会选择“如何检测浏览器协议处理程序”并正确处理它stackoverflow.com/questions/836777/…
-
@Stavm 不是浏览器协议,是进程协议。
标签: c#