Browse Source

correctly open url in net core

pull/2833/head
Student Main 5 years ago
parent
commit
bd393af8b2
2 changed files with 24 additions and 25 deletions
  1. +22
    -23
      shadowsocks-csharp/Util/Util.cs
  2. +2
    -2
      shadowsocks-csharp/View/MenuViewController.cs

+ 22
- 23
shadowsocks-csharp/Util/Util.cs View File

@@ -268,34 +268,33 @@ namespace Shadowsocks.Util
private static extern bool SetProcessWorkingSetSize(IntPtr process,
UIntPtr minimumWorkingSetSize, UIntPtr maximumWorkingSetSize);
// See: https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx
public static bool IsSupportedRuntimeVersion()
public static void OpenInBrowser(string url)
{
/*
* +-----------------------------------------------------------------+----------------------------+
* | Version | Value of the Release DWORD |
* +-----------------------------------------------------------------+----------------------------+
* | .NET Framework 4.6.2 installed on Windows 10 Anniversary Update | 394802 |
* | .NET Framework 4.6.2 installed on all other Windows OS versions | 394806 |
* +-----------------------------------------------------------------+----------------------------+
*/
const int minSupportedRelease = 394802;
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (var ndpKey = OpenRegKey(subkey, false, RegistryHive.LocalMachine))
try
{
if (ndpKey?.GetValue("Release") != null)
Process.Start(url);
}
catch
{
// hack because of this: https://github.com/dotnet/corefx/issues/10361
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
var releaseKey = (int)ndpKey.GetValue("Release");
if (releaseKey >= minSupportedRelease)
{
return true;
}
url = url.Replace("&", "^&");
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;
}
}
return false;
}
}
}

+ 2
- 2
shadowsocks-csharp/View/MenuViewController.cs View File

@@ -632,7 +632,7 @@ namespace Shadowsocks.View
private void AboutItem_Click(object sender, EventArgs e)
{
Process.Start("https://github.com/shadowsocks/shadowsocks-windows");
Utils.OpenInBrowser("https://github.com/shadowsocks/shadowsocks-windows");
}
private void notifyIcon1_Click(object sender, MouseEventArgs e)
@@ -854,7 +854,7 @@ namespace Shadowsocks.View
void openURLFromQRCode(object sender, FormClosedEventArgs e)
{
Process.Start(_urlToOpen);
Utils.OpenInBrowser(_urlToOpen);
}
private void AutoStartupItem_Click(object sender, EventArgs e)


Loading…
Cancel
Save