当我执行以下代码行时:
Process.Start("microsoft-edge:");
或者
Process.Start("microsoft-edge:http://localhost");
它给了我这个错误:
System.ComponentModel.Win32Exception: '系统找不到指定的文件。'
当我microsoft-edge:
使用Win+运行时,R它可以工作。
当我在 .net 框架中运行相同的代码时,它可以工作。
我正在使用 .netcore 3.0.0-preview6-27804-01
知道为什么会这样吗?
编辑:
这些也不起作用:
Process.Start(@"c:\Windows\System32\LaunchWinApp.exe:http://localhost");
Process.Start(@"http://localhost");
我系统上的所有其他可执行文件都可以工作。
这也有效,但我无法用它打开特定网页:
Process.Start("explorer", @"shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge");
您不能简单地打开带有预期调用的 url Process.Start("url");
您必须创建一个ProcessStartInfo
并将浏览器和 url 作为参数传递:
Process.Start(new ProcessStartInfo("cmd", $"/c start microsoft-edge:http://localhost") { CreateNoWindow = true });
(edit)ProcessStartInfo
需要使用 ,因为我们需要设置它CreateNoWindow = true
以防止 cmd 窗口出现。
但由于此代码不仅可以在 Windows 机器上运行,我会考虑使用更像这样的跨平台特定的东西(https://brockallen.com/2016/09/24/process-start-for-urls-网络核心/):
public void OpenBrowser(string url)
{
try
{
Process.Start(url);
}
catch
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
Process.Start("xdg-open", url);
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
Process.Start("open", url);
}
else
{
throw;
}
}
}
并调用它 OpenBrowser("http://localhost");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句