我正在制作一个 SSH 隧道应用程序,需要能够自动强制系统使用 HTTP 和 Socks5 代理,并使更改立即生效。 HTTP 代理现在由 PoshHTTP class 完美处理, 但我不知道如何用 SOCKS5 做同样的事情。
我已经尝试过在注册表中强制进行更改,但它们不会立即生效,而且不可靠。在大多数情况下,我必须在设置生效之前打开 Internet 选项 > LAN 设置,因此此时用户也可以手动设置代理。
有没有办法做到这一点,我错过了?如果我可以只修改 poshHTTP 来执行此操作,那就太棒了,但我并不抱太大希望。
最佳答案
任何来到这里想知道 Tor 的人,这可能对你有用
public struct Struct_INTERNET_PROXY_INFO
{
public int dwAccessType;
public IntPtr proxy;
public IntPtr proxyBypass;
};
[DllImport("wininet.dll", SetLastError = true)]
public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);
public static void RefreshProxy()
{
try
{
//RESTART TOR
Struct_INTERNET_PROXY_INFO struct_IPI;
struct_IPI.dwAccessType = 3;
struct_IPI.proxy = Marshal.StringToHGlobalAnsi("socks=127.0.0.1:9050");
struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");
IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));
Marshal.StructureToPtr(struct_IPI, intptrStruct, true);
InternetSetOption(IntPtr.Zero, 38, intptrStruct, Marshal.SizeOf(struct_IPI));
}
catch (Exception){ }
}
关于c# - 使用 C# 自动设置 Internet Explorer/Windows 以使用 Socks5 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866614/