1
Q
設置系統代理
A
回答
0
Did you check3210?
它涵蓋了更改應用程序的全局代理以及更改系統設置。
2
以下類將設置系統代理。我沒有寫我自己,並且不能爲我的生活記得在那裏我發現它:
Imports System
Imports System.Runtime.InteropServices
Public Class IEProxy
Public Enum Options
INTERNET_PER_CONN_FLAGS = 1
INTERNET_PER_CONN_PROXY_SERVER = 2
INTERNET_PER_CONN_PROXY_BYPASS = 3
INTERNET_PER_CONN_AUTOCONFIG_URL = 4
INTERNET_PER_CONN_AUTODISCOVERY_FLAGS = 5
INTERNET_OPTION_REFRESH = 37
INTERNET_OPTION_PER_CONNECTION_OPTION = 75
INTERNET_OPTION_SETTINGS_CHANGED = 39
PROXY_TYPE_PROXY = &H2
PROXY_TYPE_DIRECT = &H1
End Enum
<StructLayout(LayoutKind.Sequential)> _
Private Class FILETIME
Public dwLowDateTime As Integer
Public dwHighDateTime As Integer
End Class
<StructLayout(LayoutKind.Explicit, Size:=12)> _
Private Structure INTERNET_PER_CONN_OPTION
<FieldOffset(0)> Dim dwOption As Integer
<FieldOffset(4)> Dim dwValue As Integer
<FieldOffset(4)> Dim pszValue As IntPtr
<FieldOffset(4)> Dim ftValue As IntPtr
Public Function GetBytes() As Byte()
Dim b(12) As Byte
BitConverter.GetBytes(dwOption).CopyTo(b, 0)
Select Case dwOption
Case (Options.INTERNET_PER_CONN_FLAGS)
BitConverter.GetBytes(dwValue).CopyTo(b, 4)
Case (Options.INTERNET_PER_CONN_PROXY_BYPASS)
BitConverter.GetBytes(pszValue.ToInt32()).CopyTo(b, 4)
Case (Options.INTERNET_PER_CONN_PROXY_SERVER)
BitConverter.GetBytes(pszValue.ToInt32()).CopyTo(b, 4)
End Select
Return (b)
End Function
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Class INTERNET_PER_CONN_OPTION_LIST
Public dwSize As Integer
Public pszConnection As String
Public dwOptionCount As Integer
Public dwOptionError As Integer
Public pOptions As IntPtr
End Class
<StructLayout(LayoutKind.Sequential)> _
Private Class INTERNET_PROXY_INFO
Public dwAccessType As Integer
Public lpszProxy As IntPtr
Public lpszProxyBypass As IntPtr
End Class
Private Const ERROR_INSUFFICIENT_BUFFER = 122
Private Const INTERNET_OPTION_PROXY = 38
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
<DllImport("wininet.dll")> _
Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, _
ByVal dwOption As Integer, _
ByVal lpBuffer As INTERNET_PER_CONN_OPTION_LIST, _
ByVal dwBufferLength As Integer) As Boolean
End Function
<DllImport("kernel32.dll")> _
Private Shared Function GetLastError() As Integer
End Function
Public Function SetProxy(ByVal proxy_full_addr As String) As Boolean
Dim bReturn As Boolean
Dim list As New INTERNET_PER_CONN_OPTION_LIST
Dim dwBufSize As Integer = Marshal.SizeOf(list)
Dim opts(3) As INTERNET_PER_CONN_OPTION
Dim opt_size As Integer = Marshal.SizeOf(opts(0))
list.dwSize = dwBufSize
list.pszConnection = ControlChars.NullChar
list.dwOptionCount = 3
'set flags
opts(0).dwOption = Options.INTERNET_PER_CONN_FLAGS
opts(0).dwValue = Options.PROXY_TYPE_DIRECT Or Options.PROXY_TYPE_PROXY
'set proxyname
opts(1).dwOption = Options.INTERNET_PER_CONN_PROXY_SERVER
opts(1).pszValue = Marshal.StringToHGlobalAnsi(proxy_full_addr)
'set override
opts(2).dwOption = Options.INTERNET_PER_CONN_PROXY_BYPASS
opts(2).pszValue = Marshal.StringToHGlobalAnsi("local")
Dim b(3 * opt_size) As Byte
opts(0).GetBytes().CopyTo(b, 0)
opts(1).GetBytes().CopyTo(b, opt_size)
opts(2).GetBytes().CopyTo(b, 2 * opt_size)
Dim ptr As IntPtr = Marshal.AllocCoTaskMem(3 * opt_size)
Marshal.Copy(b, 0, ptr, 3 * opt_size)
list.pOptions = ptr
'Set the options on the connection
bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)
If Not bReturn Then
Debug.WriteLine(GetLastError)
End If
'Notify existing Internet Explorer instances that the settings have changed
bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_SETTINGS_CHANGED, Nothing, 0)
If Not bReturn Then
Debug.WriteLine(GetLastError)
End If
'Flush the current IE proxy setting
bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_REFRESH, Nothing, 0)
If Not bReturn Then
Debug.WriteLine(GetLastError)
End If
Marshal.FreeHGlobal(opts(1).pszValue)
Marshal.FreeHGlobal(opts(2).pszValue)
Marshal.FreeCoTaskMem(ptr)
Return (bReturn)
End Function
Public Function DisableProxy() As Boolean
Dim bReturn As Boolean
Dim list As New INTERNET_PER_CONN_OPTION_LIST
Dim dwBufSize As Integer = Marshal.SizeOf(list)
Dim opts(0) As INTERNET_PER_CONN_OPTION
Dim opt_size As Integer = Marshal.SizeOf(opts(0))
list.dwSize = dwBufSize
list.pszConnection = ControlChars.NullChar
list.dwOptionCount = 1
opts(0).dwOption = Options.INTERNET_PER_CONN_FLAGS
opts(0).dwValue = Options.PROXY_TYPE_DIRECT
Dim b(opt_size) As Byte
opts(0).GetBytes().CopyTo(b, 0)
Dim ptr As IntPtr = Marshal.AllocCoTaskMem(opt_size)
Marshal.Copy(b, 0, ptr, opt_size)
list.pOptions = ptr
'Set the options on the connection
bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)
If Not bReturn Then
Debug.WriteLine(GetLastError)
End If
'Notify existing Internet Explorer instances that the settings have changed
bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_SETTINGS_CHANGED, Nothing, 0)
If Not bReturn Then
Debug.WriteLine(GetLastError)
End If
'Flush the current IE proxy setting
bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_REFRESH, Nothing, 0)
If Not bReturn Then
Debug.WriteLine(GetLastError)
End If
Marshal.FreeCoTaskMem(ptr)
Return (bReturn)
End Function
End Class
使用:
Dim sProxy As New IEProxy
'set
sProxy.SetProxy("123.2.2.123:8080") 'Returns True if successful
'disable
sProxy.DisableProxy 'Returns True if successful
相關問題
- 1. stringWithContentsOfURL使用系統代理設置嗎?
- 2. 源代碼管理系統設置
- 3. 系統代理設置檢測失敗
- 4. 系統代理設置,爪哇
- 5. iphone - 以編程方式設置(系統範圍)代理設置?
- 6. 設置Android系統寬度代理設置
- 7. 系統設置?
- 8. 如何設置VB應用程序代理服務器設置爲默認系統代理設置
- 9. 如何設置理念Mac系統
- 10. 從代碼設置系統屬性。
- 11. 如何設置網絡代理和端口,而不影響系統/ IE代理
- 12. 在終端中更改Ubuntu 12.04中的系統代理設置
- 13. 如何從角度js應用程序設置系統代理
- 14. 如何從系統服務自動檢測代理設置
- 15. Python,從操作系統獲取代理設置
- 16. 如何在ICS中設置系統範圍代理
- 17. 以編程方式更改系統網絡(代理)設置
- 18. Android HttpClient不使用系統代理設置
- 19. 使用代碼管理操作系統的Wifi設置 - Android
- 20. 如何在具有代理設置的系統中使用charles?
- 21. JVM如何自動設置OS X的系統代理工作?
- 22. 爲什麼Ansible不尊重我的系統代理設置?
- 23. NSURLConnection拒絕使用OSX系統代理設置
- 24. 在java中設置系統範圍/全局代理
- 25. 通過身份驗證使用系統代理設置
- 26. 如果未在系統上設置自動檢測代理設置
- 27. 系統或配置設置
- 28. 硒代理操作系統
- 29. Air for Android - 系統設置
這是一個模糊的記憶 - 但我依稀記得,該系統從Internet Explorer獲取其代理設置。 – Origin
你需要它嗎?或者用於其他應用程序有[HttpWebRequest.Proxy](http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.proxy.aspx)和系統設置,您應該考慮[使用組策略](http ://social.technet.microsoft.com/wiki/contents/articles/5156.how-to-force-proxy-settings-via-group-policy.aspx)。 – Neolisk