【问题标题】:Opening a URL containing a query string打开包含查询字符串的 URL
【发布时间】:2013-01-29 14:53:17
【问题描述】:

我需要能够从 C# 应用程序在浏览器中打开链接。通常,我会使用这样的代码来打开链接:

Process.Start(new ProcessStartInfo("explorer.exe", @"http://www.google.com"));

不幸的是,只有当 URL 包含查询字符串时,它才能成功打开资源管理器而不是浏览器,例如: http://www.google.com/search?q=stackoverflow

如何打开带有查询字符串的 URL?

编辑说明:我正在使用带有非 IE 默认浏览器的 Windows 8。我在尝试仅使用 Process.Start 时看到与“未注册的类”相同的错误,如下所述:Process.Start(url) broken on Windows 8/Chrome - are there alternatives?

【问题讨论】:

  • 包含查询字符串时会发生什么?
  • 我有一个类未注册异常——这种情况正在发生:stackoverflow.com/questions/12206368/… 我正在运行 Windows 8,Chrome 作为默认浏览器。我的代码需要使用任何默认浏览器。

标签: c# windows-8 query-string


【解决方案1】:

终于找到了一个解决方案——在几年前编写批处理文件后我并没有尝试这样做,这很常见。

Process.Start(new ProcessStartInfo("explorer.exe", "\"" + @"http://www.google.com/search?q=stackoverflow" + "\""));

只是在它周围添加引号似乎可以正常工作。

【讨论】:

  • 对于在代码中使用此方法的任何人,我想提醒你们注意 Windows API 的 MAX_PATH 的限制。如果您的 URL 长度超过 260 个字符,则系统可能会对其进行裁剪。我在尝试处理 OIDC 身份验证时遇到了这个问题,我必须缩小 redirect_url 和 state 来解决这个问题。
【解决方案2】:

您可以使用默认浏览器:

Process.Start(@"http://www.google.com");

是不是很简单?

它适用于查询字符串:

Process.Start(@"http://www.google.com/search?q=stackoverflow");

【讨论】:

  • 这样做会给我一个“未注册的类”异常:在 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)\r\n 在 System.Diagnostics.Process.Start()\r\n在 System.Diagnostics.Process.Start(ProcessStartInfo startInfo)\r\n 在 System.Diagnostics.Process.Start(String fileName)\r\n 在 D:\\ 中的 QueryStringLaunch.Form1.button1_Click(Object sender, EventArgs e)文档\\Visual Studio 2010\\TestProjects\\QueryStringLaunch\\QueryStringLaunch\\Form1.cs:line 24" 字符串
  • 该类未注册错误指向此问题:stackoverflow.com/questions/12206368/…
  • 是的,我使用的是 Windows 8 x64
  • 理想情况下是这样,但不幸的是,我不能指望成千上万的用户这样做。
  • @cvocvo Here 您可能会找到正确注册浏览器的解决方案。希望对您有所帮助。
【解决方案3】:

你只需要这样做:

try
{
   Process.Start(@"http://www.google.com/search?q=stackoverflow");
}
catch(Exception ex)
{
   MessageBox.Show(ex.ToString());
}

【讨论】:

    【解决方案4】:

    尝试“开始”而不是“explorer.exe”。拉起命令行并输入 http://google.com?q=blah > 对我有用。

    【讨论】:

    • @cvocvo - 所以删除
    猜你喜欢
    • 2011-05-14
    • 2011-09-28
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    相关资源
    最近更新 更多