gpt4 book ai didi

c# - Process.Start(url) 失败

转载 作者:可可西里 更新时间:2023-11-01 09:05:14 29 4
gpt4 key购买 nike

我有一个针对 .NET 2.0 的 WinForms 应用程序。我们有一份报告说我们的一个按钮不起作用,它所做的只是在他们的默认浏览器中打开一个网页。查看日志我可以看到 Process.Start() 失败,因为它找不到文件。问题是我们将一个字符串 url 传递给 Start() 方法,所以我不明白为什么它会生成此消息。

这是日志中的异常:

System.ComponentModel.Win32Exception: The system cannot find the file specified
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
at *namespace*.Website.LaunchWebsiteAsync(String url)
The system cannot find the file specified
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
at *namespace*.Website.LaunchWebsiteAsync(String url)

为了完整性:

Process.Start(url);

其中 url 的值类似于:“ http://www.example.com

在网上搜索后我遇到了this blog有同样的问题。不同之处在于这是 Windows 8 特有的。他发现一些浏览器在安装时没有正确注册。随着浏览器发布更新,此问题已得到修复。 (在 Windows 8 发布后不久发布的博客)。

如果我们的客户没有安装浏览器,我也能理解。但这种情况并非如此。我还加载了一个 Windows XP 虚拟机,并尝试从下面的文件夹选项窗口中删除所有与 .htmlURL: HyperText Transfer Protocol 等文件类型的关联文件类型选项卡。但我无法重现该问题。

有没有人知道为什么这可能会失败,和/或我如何重现错误?

附带说明一下,我们的客户运行的是 Windows XP。

最佳答案

有同样的问题,在没有 IE 回退的情况下解决了。
这将使它的行为更像是在“运行”窗口中键入它:

Process.Start(new ProcessStartInfo("https://www.example.com") { UseShellExecute = true });

请注意,我正在设置 UseShellExecute = true

.Net Framework 上默认值应该是 true,在 .Net Core 上默认值应该是 false
并且 UWP 应用不应使用此标志。 see docs
(我在.Net Core上运行)

关于c# - Process.Start(url) 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835891/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com