的Process.Start( “IEXPLORE.EXE”); < - 这可靠吗?

时间:2010-05-13 13:03:07

标签: c# .net winapi

的Process.Start( “IEXPLORE.EXE”);

这在每台机器上都能正常工作吗?如果没有,如何正确地做到这一点?

...编辑:.................................

Process.Start(“http://www.example.com/”)的问题;是我们必须定位一个本地html文件,其中一些查询字符串指定要在html框架集中加载哪个页面。 所以我们的URL如下所示:

G:\PathToHelpFolder\index.html#search?page=1.html

如果将此路径传递给Process.Start,则会生成错误:“找不到该文件”。这是由最后的查询字符串引起的。 (#搜寻?页= 1.HTML)

因此,我们必须使用filepath作为命令行参数启动资源管理器(或默认浏览器会更好)。我们在MSDN文档中找到了上述方法。 (Process.Start(“IExplore.exe”);)我们唯一的问题是这个方法是否足够可靠,可以部署到商业应用程序。单声道不是问题,只有Windows系统是目标。

...编辑:我们的解决方案......

我们的解决方案是从注册表中获取默认浏览器,并以文件名作为参数启动它。 (如:Launching default browser with html from file, then jump to specific anchor

7 个答案:

答案 0 :(得分:22)

如果您的目标是打开浏览器转到特定页面,最好只使用页面网址:

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

这样,将使用用户的默认浏览器。 (我,对于其中一个,会因为被迫使用IE而烦恼。)

答案 1 :(得分:5)

我曾经为我构建的一个愚蠢的应用程序需要默认浏览器的名称(没有打开),我在这里找到了一个很棒的教程: http://ryanfarley.com/blog/archive/2004/05/16/649.aspx

答案 2 :(得分:3)

这应该适用于IExplore.exe可以使用PATH环境变量找到的位置中具有Process.Start可执行文件的每台计算机。

Process.Start documentation

  

通过指定文件名来启动进程类似于在Windows“开始”菜单的“运行”对话框中键入信息。因此,文件名不需要表示可执行文件。它可以是扩展名与系统上安装的应用程序关联的任何文件类型。例如,如果您将文本文件与编辑器(如记事本)关联,则文件名可以具有.txt扩展名;如果您具有带有文字处理工具的关联.doc文件(如Microsoft Word),则文件名可以具有.doc。同样,与“运行”对话框可以接受带有或不带.exe扩展名的可执行文件名的方式相同,.exe扩展名在fileName参数中是可选的。例如,您可以将fileName参数设置为“Notepad.exe”或“Notepad”。

如果有人重命名或删除了IExplore.exe,或者它位于不在PATH环境变量中的位置,那么它将无效。

但是,如果您的目标是打开浏览器,那么我会像其他人建议的那样传递URL。

答案 3 :(得分:2)

你也可以在那里扔一个网址。 (Process.Start("http://somewebsite.com");)将始终有效并使用标准浏览器。

答案 4 :(得分:2)

您可能应该直接运行HTML文件,以便尊重用户的关联。作为一个用户,当我明确地设置我的偏好设置以使用其他浏览器时,有一些包迫使我使用IE,这对我来说没什么烦恼。

答案 5 :(得分:0)

您可以创建一个简单的HTML文件,重定向您想要的实际链接,然后启动指向该更简单网址的流程。

答案 6 :(得分:0)

试试这个:

Process.Start("file:///g:/PathToHelpFolder/index.html#search?page=1.html");

相关问题