mirror of
https://github.com/netchx/netch.git
synced 2026-05-11 23:45:06 +08:00
Change system proxy settings with C++ Windows API
This commit is contained in:
@@ -36,7 +36,10 @@ namespace Netch.Controllers
|
|||||||
|
|
||||||
if (mode.Type != 5)
|
if (mode.Type != 5)
|
||||||
{
|
{
|
||||||
|
NativeMethods.SetGlobal($"127.0.0.1:{Global.Settings.HTTPLocalPort}", "<local>");
|
||||||
|
|
||||||
// HTTP 系统代理模式,启动系统代理
|
// HTTP 系统代理模式,启动系统代理
|
||||||
|
/*
|
||||||
using (var registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true))
|
using (var registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true))
|
||||||
{
|
{
|
||||||
registry.SetValue("ProxyEnable", 1);
|
registry.SetValue("ProxyEnable", 1);
|
||||||
@@ -45,6 +48,7 @@ namespace Netch.Controllers
|
|||||||
Win32Native.InternetSetOption(IntPtr.Zero, 39, IntPtr.Zero, 0);
|
Win32Native.InternetSetOption(IntPtr.Zero, 39, IntPtr.Zero, 0);
|
||||||
Win32Native.InternetSetOption(IntPtr.Zero, 37, IntPtr.Zero, 0);
|
Win32Native.InternetSetOption(IntPtr.Zero, 37, IntPtr.Zero, 0);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -72,6 +76,9 @@ namespace Netch.Controllers
|
|||||||
Utils.Logging.Info(e.ToString());
|
Utils.Logging.Info(e.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NativeMethods.SetDIRECT();
|
||||||
|
|
||||||
|
/*
|
||||||
using (var registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true))
|
using (var registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true))
|
||||||
{
|
{
|
||||||
registry.SetValue("ProxyEnable", 0);
|
registry.SetValue("ProxyEnable", 0);
|
||||||
@@ -80,6 +87,7 @@ namespace Netch.Controllers
|
|||||||
Win32Native.InternetSetOption(IntPtr.Zero, 39, IntPtr.Zero, 0);
|
Win32Native.InternetSetOption(IntPtr.Zero, 39, IntPtr.Zero, 0);
|
||||||
Win32Native.InternetSetOption(IntPtr.Zero, 37, IntPtr.Zero, 0);
|
Win32Native.InternetSetOption(IntPtr.Zero, 37, IntPtr.Zero, 0);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace Netch
|
|||||||
/// <param name="index">适配器索引</param>
|
/// <param name="index">适配器索引</param>
|
||||||
/// <param name="metric">跃点数</param>
|
/// <param name="metric">跃点数</param>
|
||||||
/// <returns>是否成功</returns>
|
/// <returns>是否成功</returns>
|
||||||
[DllImport("bin\\NetchCore.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "CreateRoute")]
|
[DllImport("bin\\NetchCore", CallingConvention = CallingConvention.Cdecl, EntryPoint = "CreateRoute")]
|
||||||
public static extern bool CreateRoute(string address, int netmask, string gateway, int index, int metric = 0);
|
public static extern bool CreateRoute(string address, int netmask, string gateway, int index, int metric = 0);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -25,7 +25,7 @@ namespace Netch
|
|||||||
/// <param name="index">适配器索引</param>
|
/// <param name="index">适配器索引</param>
|
||||||
/// <param name="metric">跃点数</param>
|
/// <param name="metric">跃点数</param>
|
||||||
/// <returns>是否成功</returns>
|
/// <returns>是否成功</returns>
|
||||||
[DllImport("bin\\NetchCore.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "ChangeRoute")]
|
[DllImport("bin\\NetchCore", CallingConvention = CallingConvention.Cdecl, EntryPoint = "ChangeRoute")]
|
||||||
public static extern bool ChangeRoute(string address, int netmask, string gateway, int index, int metric = 0);
|
public static extern bool ChangeRoute(string address, int netmask, string gateway, int index, int metric = 0);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -37,7 +37,31 @@ namespace Netch
|
|||||||
/// <param name="index">适配器索引</param>
|
/// <param name="index">适配器索引</param>
|
||||||
/// <param name="metric">跃点数</param>
|
/// <param name="metric">跃点数</param>
|
||||||
/// <returns>是否成功</returns>
|
/// <returns>是否成功</returns>
|
||||||
[DllImport("bin\\NetchCore.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "DeleteRoute")]
|
[DllImport("bin\\NetchCore", CallingConvention = CallingConvention.Cdecl, EntryPoint = "DeleteRoute")]
|
||||||
public static extern bool DeleteRoute(string address, int netmask, string gateway, int index, int metric = 0);
|
public static extern bool DeleteRoute(string address, int netmask, string gateway, int index, int metric = 0);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置直连
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>是否成功</returns>
|
||||||
|
[DllImport("bin\\sysproxy", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool SetDIRECT();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置全局
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="remote">地址</param>
|
||||||
|
/// <param name="bypass">绕过</param>
|
||||||
|
/// <returns>是否成功</returns>
|
||||||
|
[DllImport("bin\\sysproxy", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool SetGlobal([MarshalAs(UnmanagedType.LPTStr)] string remote, [MarshalAs(UnmanagedType.LPTStr)] string bypass);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置自动代理
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="remote">URL</param>
|
||||||
|
/// <returns>是否成功</returns>
|
||||||
|
[DllImport("bin\\sysproxy", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool SetURL([MarshalAs(UnmanagedType.LPTStr)] string remote);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user