Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Process.Start(“IExplore.exe”)<;——这可靠吗?_C#_.net_Winapi - Fatal编程技术网

C# Process.Start(“IExplore.exe”)<;——这可靠吗?

C# Process.Start(“IExplore.exe”)<;——这可靠吗?,c#,.net,winapi,C#,.net,Winapi,Process.Start(“IExplore.exe”) 这在每台机器上都有效吗?若否,如何妥善处理 。。。编辑: Process.Start的问题(“”);我们必须以本地html文件为目标,使用一些查询字符串指定要在html框架集中加载的页面。 因此,我们的URL如下所示: G:\PathToHelpFolder\index.html#search?page=1.html 如果将此路径传递给Process.Start,将生成一个错误:“找不到文件”。这是由末尾的查询字符串引起的。(#sea

Process.Start(“IExplore.exe”)

这在每台机器上都有效吗?若否,如何妥善处理

。。。编辑:

Process.Start的问题(“”);我们必须以本地html文件为目标,使用一些查询字符串指定要在html框架集中加载的页面。 因此,我们的URL如下所示:

G:\PathToHelpFolder\index.html#search?page=1.html
如果将此路径传递给Process.Start,将生成一个错误:“找不到文件”。这是由末尾的查询字符串引起的。(#search?page=1.html)

所以,我们必须以filepath作为命令行参数启动explorer(或者默认浏览器更好)。我们在MSDN文档中找到了上述方法。(Process.Start(“IExplore.exe”);我们唯一的问题是,这种方法是否足够可靠,可以部署到商业应用程序中。Mono不是问题,只针对windows系统

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


我们的解决方案是从注册表中获取默认浏览器,并以文件名作为参数启动。(如中所述:)

如果您的目标是打开浏览器进入特定页面,最好只使用页面URL:

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

这样,将使用用户的默认浏览器。(举例来说,我会对被迫使用IE感到恼火。)

你也可以在那里输入一个url。(
Process.Start(“”;
)将始终工作并使用标准浏览器。

您可能应该直接运行HTML文件,以便尊重用户的关联。作为一个用户,没有什么比在我清楚地设置了使用另一个浏览器的首选项后,让某个软件包强迫我使用IE更烦人的了。

这应该适用于在
Process.Start
可以使用PATH环境变量找到的位置有一个名为
IExplore.exe
的可执行文件的每台机器

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

如果有人重命名或删除了
IExplore.exe
,或者它所在的位置不在PATH环境变量中,则它将不起作用


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

我曾经为我构建的一个愚蠢的应用程序需要默认浏览器名称(不打开),我在这里找到了一个很棒的教程:

您可以创建一个简单的HTML文件,将链接重定向到所需的实际链接,然后启动指向该简单url的过程。

尝试以下操作:


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

我想说,它在大多数情况下都会失败,你可能会使用Mono:)有一次我删除了IE6 exe文件,以避免程序启动IE。它离开了DLL,因此VisStudio可以解析帮助文件。但是,如果你以本地文件为目标,并添加了一个查询字符串,这将不起作用。。。默认浏览器点也为+1。。。感谢如果有人试图在锁定的(公司)PC上安装Google Chrome,这可能会失败,之后MSIE仍然可以工作,是默认浏览器,但注册表被破坏。解决方案是修复注册表内容。不起作用。。。querystring被截断,即使将整个字符串括在引号中。。。