如何使用默认浏览器在C#中使用锚(#)打开html文件

如何使用默认浏览器在C#中使用锚(#)打开html文件,c#,.net,html,uri,anchor,C#,.net,Html,Uri,Anchor,我正在尝试用c#打开上下文帮助文件 当我没有指定锚定时,它可以完美地工作 Process.Start("C:/Help/Help.htm") 但当我指定锚点时,它不会打开 Process.Start("C:/Help/Help.htm#_Toc342057538") 在内部,它将“#”更改为“%23”,路径变为浏览器无法识别的“c:\Help.htm%23” 浏览器正在成功打开路径“c:\Help.htm#u Toc342057538” 如何通过停止此自动转换。如果我将锚定标签作为另一个参数

我正在尝试用c#打开上下文帮助文件

当我没有指定锚定时,它可以完美地工作

Process.Start("C:/Help/Help.htm")
但当我指定锚点时,它不会打开

Process.Start("C:/Help/Help.htm#_Toc342057538")
在内部,它将
“#”
更改为
“%23”
,路径变为浏览器无法识别的
“c:\Help.htm%23”

浏览器正在成功打开路径“c:\Help.htm#u Toc342057538”

如何通过停止此自动转换。如果我将锚定标签作为另一个参数或使用类,则会观察到相同的行为

编辑 当我在WindowRun中输入字符串时,观察到了相同的行为。以下命令还将
#
转换为浏览器无法识别的
%23

chrome c:/Help.htm#_Toc342057538

试试这个。我只是自己做的,在internet explorer中工作

string s = "file:///D:/tmp/test.html%23test";
      s = uri.UnescapeDataString(s);

      Process.Start(s);

请让我知道它是否适用于您。

在我的Windows 7系统上,以下两个选项都在Internet Explorer中打开C:\Help\Help.htm并滚动到_Toc342057538锚定:

Process.Start("iexplore", "file://C:/Help/Help.htm#_Toc342057538");
Process.Start("iexplore", @"C:\Help\Help.htm#_Toc342057538");
对于Firefox和Chrome,似乎只有
文件
协议有效:

Process.Start("firefox", "file://C:/Help/Help.htm#_Toc342057538");
Process.Start("chrome", "file://C:/Help/Help.htm#_Toc342057538");

您是否尝试过打开用户默认浏览器并将文件作为参数传递(Process.Start中的第二个参数)?这里有一个默认浏览器检查的示例:是您的默认浏览器firefox,我的浏览器是internet explorer,它在itit中似乎工作正常。它使用了文件://D:。。。而不是与file:///d:.... 似乎额外的反斜杠是个问题