【问题标题】:How do I open default browser to home page in C#?如何在 C# 中打开默认浏览器到主页?
【发布时间】:2017-04-13 04:16:07
【问题描述】:

下面的问题是“如何在 C# 中打开默认浏览器到 URL?”的答案。但是如何在不导航到 URL 的情况下在 C# 中打开默认浏览器?期望的行为是默认浏览器打开主页,或使用启动行为(例如,在 Firefox 选项“当 Firefox 启动时”中定义)。

How to open in default browser in C#

【问题讨论】:

  • 您要在哪个操作系统上执行此操作?
  • 这并不容易,因为你想要的 URL 是about:home,但你不能把它交给操作系统。这意味着您必须弄清楚默认浏览器是什么,获取它的路径,然后将 URL 作为命令行参数传递。
  • @itsme86,平台是 WPF,Windows 7/8/10。
  • 你可以先阅读this来找到默认的浏览器命令行。然后只需读取 C# 中简单的注册表,然后使用 Process.Start() 运行注册表项中指定的命令。

标签: c# browser


【解决方案1】:

应该这样做:

Process p = new Process();
p.StartInfo = new StartInfo(url) {UseShellExecute = true};
p.Start();

EDIT:这适用于有效的 URL。正如上面的评论所说,这不适用于http://about:home。

编辑#2:我会保留以前的代码,以防它对任何人有帮助。由于上面的评论我一直在寻找如何去做,实际上并不是那么简单,这就是我为了启动默认浏览器而不导航到任何 URL 所做的。

using (var assoc = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice"))
{
    using (var cr = Registry.ClassesRoot.OpenSubKey(assoc.GetValue("ProgId") + @"\shell\open\command"))
    {
        string loc = cr.GetValue("").ToString().Split('"')[1];
        // In windows 10 if Microsoft edge is the default browser 
        // loc=C:\Windows\system32\LaunchWinApp.exe, so launch Microsoft Edge manually
        // 'cause didn't figured it out how to launc ME with that exe
        if (Path.GetFileNameWithoutExtension(loc) == "LaunchWinApp")
            Process.Start("explorer", @"shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge");
        else
            Process.Start(loc);
    }
}

我在我的机器 (Win10) 上对其进行了测试,并针对每个默认浏览器开关进行了测试。希望现在有所帮助。

【讨论】:

  • OP 明确表示“但是如何在 C# 中打开默认浏览器而不导航到 URL”。您的答案需要一个 URL 才能导航到。你看出问题了吧?
  • @itsme86 我更新了我的答案。感谢您的评论。
猜你喜欢
  • 2011-11-19
  • 2018-10-19
  • 2011-06-02
  • 1970-01-01
  • 2011-07-01
  • 2018-03-18
  • 2011-05-09
  • 1970-01-01
相关资源
最近更新 更多