【发布时间】:2017-05-24 07:37:11
【问题描述】:
我有一个来自现有 .NET Framework 项目的方法,它从注册表中获取 Windows 中默认浏览器的路径,并通过 Process 调用启动它:
string browser = "";
RegistryKey regKey = null;
try
{
regKey = Registry.ClassesRoot.OpenSubKey("HTTP\\shell\\open\\command", false);
browser = regKey.GetValue(null).ToString().Replace("" + (char)34, "");
if (!browser.EndsWith(".exe"))
browser = browser.Substring(0, browser.LastIndexOf(".exe") + 4);
}
finally
{
if (regKey != null)
regKey.Close();
}
ProcessStartInfo info = new ProcessStartInfo(browser);
info.Arguments = "\"" + url + "\"";
Process.Start(info);
这个项目试图设置跨平台,所以我将它移植到 .NET Standard (1.2)。问题是我不确定 .NET Standard 与 RegistryKey 和 Process(和 ProcessStartInfo)的等效项是什么。当然,对于其他平台,该系统上可能没有注册表或任何“进程”概念。那么有没有办法在 .NET Standard 中实现上述功能呢? (或者也许这是一个 X-Y 问题,而我做错了?)
【问题讨论】:
-
我想说“获取默认浏览器的路径然后启动它”是不可移植的。
-
仅供参考,至少在 Windows 上,您可以通过执行以下操作直接转到默认浏览器中的 URL:
Process.Start("https://www.google.com");。无需为此去注册表:) -
@Evk 我现在主要关心“主要”桌面平台(Windows、Mac OS,也许是更流行的 Linux 版本),所以我希望它足够便携并在我以后需要时找出另一种方法。
-
@LucasTrzesniewski 这是一个花哨的把戏。我想知道这种方法是否也是跨平台的。
标签: c# .net process registry .net-standard