Biz*_*han 4 c# process .net-core microsoft-edge
当我执行以下代码行时:
Process.Start("microsoft-edge:");
Run Code Online (Sandbox Code Playgroud)
或者
Process.Start("microsoft-edge:http://localhost");
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
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");
Run Code Online (Sandbox Code Playgroud)
我系统上的所有其他可执行文件都可以工作。
这也有效,但我无法用它打开特定网页:
Process.Start("explorer", @"shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge");
Run Code Online (Sandbox Code Playgroud)
“默认值在 .NET Framework 应用程序上为 true,在 .NET Core 应用程序上为 false。”
这意味着直接的解决方案是设置UseShellExecute。除了创建显式 Process 对象来修改设置之外,以下内容与原始内容基本相同。
Process pWeb = new Process();
pWeb.StartInfo.UseShellExecute = true;
pWeb.StartInfo.FileName = "microsoft-edge:http://localhost";
pWeb.Start();
Run Code Online (Sandbox Code Playgroud)
感谢 @Lex Li 和 @Bizhan 的评论导致了这个解决方案。
您不能简单地打开带有预期调用的 url Process.Start("url");
您必须创建一个ProcessStartInfo并将浏览器和 url 作为参数传递:
Process.Start(new ProcessStartInfo("cmd", $"/c start microsoft-edge:http://localhost") { CreateNoWindow = true });
Run Code Online (Sandbox Code Playgroud)
(编辑)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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并调用它 OpenBrowser("http://localhost");
| 归档时间: |
|
| 查看次数: |
1683 次 |
| 最近记录: |