mirror of
https://github.com/2dust/v2rayN.git
synced 2025-05-14 20:28:11 +00:00
74 lines
2.1 KiB
C#
74 lines
2.1 KiB
C#
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using Microsoft.Win32;
|
|
|
|
namespace ServiceLib.Common
|
|
{
|
|
internal static class WindowsUtils
|
|
{
|
|
private static readonly string _tag = "WindowsUtils";
|
|
|
|
public static string? RegReadValue(string path, string name, string def)
|
|
{
|
|
RegistryKey? regKey = null;
|
|
try
|
|
{
|
|
regKey = Registry.CurrentUser.OpenSubKey(path, false);
|
|
var value = regKey?.GetValue(name) as string;
|
|
return value.IsNullOrEmpty() ? def : value;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logging.SaveLog(_tag, ex);
|
|
}
|
|
finally
|
|
{
|
|
regKey?.Close();
|
|
}
|
|
return def;
|
|
}
|
|
|
|
public static void RegWriteValue(string path, string name, object value)
|
|
{
|
|
RegistryKey? regKey = null;
|
|
try
|
|
{
|
|
regKey = Registry.CurrentUser.CreateSubKey(path);
|
|
if (value.ToString().IsNullOrEmpty())
|
|
{
|
|
regKey?.DeleteValue(name, false);
|
|
}
|
|
else
|
|
{
|
|
regKey?.SetValue(name, value);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logging.SaveLog(_tag, ex);
|
|
}
|
|
finally
|
|
{
|
|
regKey?.Close();
|
|
}
|
|
}
|
|
|
|
public static async Task RemoveTunDevice()
|
|
{
|
|
try
|
|
{
|
|
var sum = MD5.HashData(Encoding.UTF8.GetBytes("wintunsingbox_tun"));
|
|
var guid = new Guid(sum);
|
|
var pnpUtilPath = @"C:\Windows\System32\pnputil.exe";
|
|
var arg = $$""" /remove-device "SWD\Wintun\{{{guid}}}" """;
|
|
|
|
// Try to remove the device
|
|
await Utils.GetCliWrapOutput(pnpUtilPath, arg);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logging.SaveLog(_tag, ex);
|
|
}
|
|
}
|
|
}
|
|
}
|