我有一个来自现有 .NET Framework 项目的方法,该方法从注册表获取 Windows 中默认浏览器的路径,并使用Process
call:
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
and Process
(and ProcessStartInfo
)。当然,对于其他平台,该系统上可能没有注册表或任何“进程”的概念。那么.NET Standard中有没有办法实现上述功能呢? (或者也许这是一个 X-Y 问题而我的处理方式全错了?)
注册表仅在 .NET Standard 1.3 中可用,使用Microsoft.Win32.Registry
NuGet 包。因此,如果您想使用注册表,则不能以 1.2 为目标。
相似地,System.Diagnostics.Process
适用于使用 NuGet 包的 .NET Standard 1.3System.Diagnostics.Process
(对于 .NET Standard 2.0,不需要单独的 NuGet 包来访问它)。
为了获得“默认浏览器”,没有完整的跨平台解决方案,因为您需要与用户正在使用的任何桌面解决方案集成 - 例如MacOS、KDE、GNOME、Ubuntu Unity 等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)