c# 기반 IE 프록시 설정
기본 프로그램은 마지막에 표시됩니다.
다음 레코드에 사용된 프로그램 중 일부는 다음과 같습니다.
1. 이 에이전트를 사용한 시간을 계산합니다.
DateTime start_time = DateTime.Now;
private void show_timer_Tick(object sender, EventArgs e)
{
DateTime time_now = DateTime.Now;
date_label.Text = time_now.ToShortDateString();
time_label.Text = time_now.ToShortTimeString();
TimeSpan time_begin = new TimeSpan(start_time.Ticks);
TimeSpan time_end= new TimeSpan(time_now.Ticks);
TimeSpan time_span = time_end.Subtract(time_begin).Duration();
usedTime_label.Text ="Used "+ time_span.Hours.ToString() + " hours" + " "+time_span.Minutes.ToString() + " mins";
}
Timespan과 Timer 컨트롤이 주로 사용됩니다.이 슬라이드에는 현재 시간이 표시됩니다.
2, 컴퓨터 관련 정보, 컴퓨터 이름, 사용자 이름, 프로세서 수량, 컴퓨터 물리 주소, 운영체제 버전, 실행 시 공통 언어(기본적으로 필요 없음)를 얻습니다.
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
computer_info_listBox.Items.Add("computer name:" );
computer_info_listBox.Items.Add( Environment.MachineName);
computer_info_listBox.Items.Add("user name:" );
computer_info_listBox.Items.Add( Environment.UserName);
computer_info_listBox.Items.Add("processor count:" );
computer_info_listBox.Items.Add( Environment.ProcessorCount);
computer_info_listBox.Items.Add("computer mac address:");
computer_info_listBox.Items.Add( GetNetworkAdapterID());
computer_info_listBox.Items.Add("Operation system version:" );
computer_info_listBox.Items.Add(Environment.OSVersion);
computer_info_listBox.Items.Add("common language running:");
computer_info_listBox.Items.Add(Environment.Version);
이 코드는 구성 요소 초기화 프로그램 (Initialize Component ();뒤.
그 중에서 컴퓨터의 물리적 주소를 가져와 사용자 정의 함수를 호출했다.함수 정의는 다음과 같다.
public static string GetNetworkAdapterID()
{
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetWorkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"]==true)
mac = mo["MacAddress"].ToString();
}
return mac;
}
인터넷상에서 물리적 주소에 대해 얻는 방식이 비교적 많다.이곳은 홈페이지의 실례를 참고한 것이다.인터넷상의 이런 방법은 함수 정의가 약간 복잡하지만, 테스트에서 어떤 것은 반드시 사용할 수 없다는 것을 발견하였다.
3. 프록시 켜기, 프록시 끄기 프록시 켜기
프록시 파일을 debug 파일 아래에 두십시오.exe 파일.그런 다음 IE 프록시 설정을 켜는 동안 이 프로그램을 실행합니다.
System.Diagnostics.Process.Start(@".\proxyfile\local\<span style="line-height: 29.7000007629395px; white-space: pre-wrap; font-family: 'microsoft yahei';">proxy</span>.exe");
여기의 proxyfile은.exe 파일입니다.proxy는 프록시 이름입니다. 프록시 이름을 입력하지 않았습니다.
프록시 종료
public void KillProcess(string ProName)
{
Process[] Goagent_proxy = Process.GetProcessesByName(ProName);
foreach(Process p_kill in Goagent_proxy)
{
p_kill.Kill();
}
}
실행 중인 프록시 서버를 닫는 것은 상기 함수를 호출하는 것으로 그 중 함수의 매개 변수는 프록시 이름, 즉proxy입니다.exe의 proxy입니다.
여기는 주로 프로세스 클래스를 사용하는데 구체적으로 사용하면 관련 문서를 참고할 수 있습니다.
4. 메시지 박스 실행 이벤트를 닫습니다.이것은 웹 주소를 여는 곳입니다.
DialogResult message_Result= MessageBox.Show("Step1: Import certificate from goagent, detail operation,see:" + "
" + " when you click the OK below,you will see the article " +"
"+"Step2: click setting proxy button in the interface", "Instruction",MessageBoxButtons.OK);
if (message_Result == DialogResult.OK)
{
Process.Start("http://jingyan.baidu.com/article/8275fc869f1c0c46a03cf6e9.html ");
}
}
5 설치 배포
여기에 사용된 비주얼 스튜디오 2012 버전은 2010 버전과 달리 Install Shiled를 수동으로 다운로드해야 합니다.절차는 다음과 같다.
VS, new - Project - Installed-template - other Project Types - Setup and Deployment, ok 후자 가운데 Install Shield Limited Edition Project를 선택하면 브라우저에서 프로그램을 다운로드한 웹 페이지를 열고 오른쪽에 관련 정보를 기입합니다.그런 다음 다운로드합니다.
국가, 도시 등에서 드롭다운 상자를 열어 작성할 수 없을 경우 Great Wall이 작동하고 있음을 나타냅니다. 해결 방법은 프록시 서버를 사용하여 이 페이지를 여는 것입니다.
다음 단계는 InstallShield 설치를 다운로드하는 것입니다.설치 전에 VS를 끄고 설치 프로그램을 마우스 오른쪽 버튼으로 클릭하여 관리자로 실행하십시오.
완성되면 이전의 절차에 따라 다시 조작하면 된다.
프로그램 소스 코드
ProxySeting.cs:
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Management;
using System.IO;
namespace IEProxyManagment
{
public partial class ProxySeting : Form
{
DateTime start_time = DateTime.Now;
public ProxySeting()
{
InitializeComponent();
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
computer_info_listBox.Items.Add("computer name:" );
computer_info_listBox.Items.Add( Environment.MachineName);
computer_info_listBox.Items.Add("user name:" );
computer_info_listBox.Items.Add( Environment.UserName);
computer_info_listBox.Items.Add("processor count:" );
computer_info_listBox.Items.Add( Environment.ProcessorCount);
computer_info_listBox.Items.Add("computer mac address:");
computer_info_listBox.Items.Add( GetNetworkAdapterID());
computer_info_listBox.Items.Add("Operation system version:" );
computer_info_listBox.Items.Add(Environment.OSVersion);
computer_info_listBox.Items.Add("common language running:");
computer_info_listBox.Items.Add(Environment.Version);
//DateTime start_time = DateTime.Now;
}
public static string GetNetworkAdapterID()
{
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetWorkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"]==true)
mac = mo["MacAddress"].ToString();
}
return mac;
}
/* public static List<string> GetMacByIPConfig()
{
List<string> macs = new List<string>();
ProcessStartInfo startInfo = new ProcessStartInfo("ipconfig", "/all");
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow = false;
Process p = Process.Start(startInfo);
StreamReader reader = p.StandardOutput;
string line = reader.ReadLine();
while (!reader.EndOfStream)
{
if (string.IsNullOrEmpty(line))
{
line = line.Trim();
if (line.StartsWith("Physical Address"))
{
macs.Add(line);
}
}
line = reader.ReadLine();
}
p.WaitForExit();
p.Close();
reader.Close();
return macs;
} */
private void btnSetProxy_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(@".\proxyfile\local\proxy.exe");
string proxyStr = combProxyList.Text.Trim();
IEProxySetting.SetProxy(proxyStr, null);
var currentProxy = GetProxyServer();
if (currentProxy == proxyStr && GetProxyStatus())
{
lblInfo.Text = "Setting Proxy:" + proxyStr + " successfully!";
lblInfo.ForeColor = Color.Green;
}
else
{
if (!GetProxyStatus())
{
lblInfo.Text = "Setting Proxy:" + proxyStr + "Proxy does not work!";
}
else
{
lblInfo.Text = "Setting Proxy:" + proxyStr + "failed,It is using" + currentProxy + "Proxy,please try!";
}
lblInfo.ForeColor = Color.Red;
}
ShowProxyInfo();
btnSetProxy.Enabled = false;
btnDisableProxy.Enabled = true;
}
private void ProxySetingWin_Load(object sender, EventArgs e)
{
ShowProxyInfo();
InitProxyData();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
private string GetProxyServer()
{
//
RegistryKey regKey = Registry.CurrentUser;
string SubKeyPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath, true); // , ,
string actualProxy = optionKey.GetValue("ProxyServer").ToString();
regKey.Close();
return actualProxy;
}
private bool GetProxyStatus()
{
//
RegistryKey regKey = Registry.CurrentUser;
string SubKeyPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath, true); // , ,
int actualProxyStatus = Convert.ToInt32(optionKey.GetValue("ProxyEnable"));
regKey.Close();
return actualProxyStatus == 1 ? true : false;
}
private void ShowProxyInfo()
{
if (!GetProxyStatus())
{
lblInitInfo.Text = "Proxy Disabled:";
}
else
{
lblInitInfo.Text = "Current using Proxy is:" + GetProxyServer();
}
}
private void InitProxyData()
{
List<string> proxyList = new List<string>{
"127.0.0.1:8087","127.0.0.1:8088"
};
combProxyList.DataSource = proxyList;
combProxyList.SelectedIndex = 0;
}
public void KillProcess(string ProName)
{
Process[] Goagent_proxy = Process.GetProcessesByName(ProName);
foreach(Process p_kill in Goagent_proxy)
{
p_kill.Kill();
}
}
private void btnDisableProxy_Click(object sender, EventArgs e)
{
KillProcess("proxy");
IEProxySetting.UnsetProxy();
if (!GetProxyStatus())
{
lblInfo.Text = "Diable Proxy successfully!";
lblInfo.ForeColor = Color.Green;
btnSetProxy.Enabled = true;
btnDisableProxy.Enabled = false;
}
else
{
lblInfo.Text = "fail to cancle,using Proxy " + GetProxyServer();
lblInfo.ForeColor = Color.Red;
btnSetProxy.Enabled = false;
btnDisableProxy.Enabled = true;
}
ShowProxyInfo();
// btnSetProxy.FlatAppearance.BorderSize = 0;//
btnSetProxy.Enabled = true;
btnDisableProxy.Enabled = false;
}
private void btnSetProxy_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
btnSetProxy.BackColor = Color.Red;
}
private void btnSetProxy_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
btnSetProxy.BackColor = System.Drawing.SystemColors.ControlLight;
}
private void btnDisableProxy_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
btnDisableProxy.BackColor = Color.Red;
}
private void btnDisableProxy_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
btnDisableProxy.BackColor = System.Drawing.SystemColors.ControlLight;
}
private void problemsToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Counter any problem,please setting proxy manually"+"
"+"Or, Contact the maker.");
}
private void editorToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Edited by YangHong,and based on other's work" + "
" + "Contact him with email or QQ:1368783069");
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void show_timer_Tick(object sender, EventArgs e)
{
DateTime time_now = DateTime.Now;
date_label.Text = time_now.ToShortDateString();
time_label.Text = time_now.ToShortTimeString();
TimeSpan time_begin = new TimeSpan(start_time.Ticks);
TimeSpan time_end= new TimeSpan(time_now.Ticks);
TimeSpan time_span = time_end.Subtract(time_begin).Duration();
usedTime_label.Text ="Used "+ time_span.Hours.ToString() + " hours" + " "+time_span.Minutes.ToString() + " mins";
}
private void instructionToolStripMenuItem_Click(object sender, EventArgs e)
{
// MessageBox.Show("Step1: Import certificate from goagent, detail operation,see:" + "
" + "http://jingyan.baidu.com/article/8275fc869f1c0c46a03cf6e9.html " +"
"+"Step2: click setting proxy button in the interface", "Instruction");
DialogResult message_Result= MessageBox.Show("Step1: Import certificate from goagent, detail operation,see:" + "
" + " when you click the OK below,you will see the article " +"
"+"Step2: click setting proxy button in the interface", "Instruction",MessageBoxButtons.OK);
if (message_Result == DialogResult.OK)
{
Process.Start("http://jingyan.baidu.com/article/8275fc869f1c0c46a03cf6e9.html ");
}
}
}
}
ProxySetting_Function
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace IEProxyManagment
{
public class ProxySetting_Function
{
public static bool UnsetProxy()
{
return SetProxy(null, null);
}
public static bool SetProxy(string strProxy)
{
return SetProxy(strProxy, null);
}
public static bool SetProxy(string strProxy, string exceptions)
{
InternetPerConnOptionList list = new InternetPerConnOptionList();
int optionCount = string.IsNullOrEmpty(strProxy) ? 1 : (string.IsNullOrEmpty(exceptions) ? 2 : 3);
InternetConnectionOption[] options = new InternetConnectionOption[optionCount];
// USE a proxy server ...
options[0].m_Option = PerConnOption.INTERNET_PER_CONN_FLAGS;
options[0].m_Value.m_Int = (int)((optionCount < 2) ? PerConnFlags.PROXY_TYPE_DIRECT : (PerConnFlags.PROXY_TYPE_DIRECT | PerConnFlags.PROXY_TYPE_PROXY));
// use THIS proxy server
if (optionCount > 1)
{
options[1].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_SERVER;
options[1].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(strProxy);
// except for these addresses ...
if (optionCount > 2)
{
options[2].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_BYPASS;
options[2].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(exceptions);
}
}
// default stuff
list.dwSize = Marshal.SizeOf(list);
list.szConnection = IntPtr.Zero;
list.dwOptionCount = options.Length;
list.dwOptionError = 0;
int optSize = Marshal.SizeOf(typeof(InternetConnectionOption));
// make a pointer out of all that ...
IntPtr optionsPtr = Marshal.AllocCoTaskMem(optSize * options.Length);
// copy the array over into that spot in memory ...
for (int i = 0; i < options.Length; ++i)
{
IntPtr opt = new IntPtr(optionsPtr.ToInt32() + (i * optSize));
Marshal.StructureToPtr(options[i], opt, false);
}
list.options = optionsPtr;
// and then make a pointer out of the whole list
IntPtr ipcoListPtr = Marshal.AllocCoTaskMem((Int32)list.dwSize);
Marshal.StructureToPtr(list, ipcoListPtr, false);
// and finally, call the API method!
int returnvalue = NativeMethods.InternetSetOption(IntPtr.Zero,
InternetOption.INTERNET_OPTION_PER_CONNECTION_OPTION,
ipcoListPtr, list.dwSize) ? -1 : 0;
if (returnvalue == 0)
{ // get the error codes, they might be helpful
returnvalue = Marshal.GetLastWin32Error();
}
// FREE the data ASAP
Marshal.FreeCoTaskMem(optionsPtr);
Marshal.FreeCoTaskMem(ipcoListPtr);
if (returnvalue > 0)
{ // throw the error codes, they might be helpful
throw new Win32Exception(Marshal.GetLastWin32Error());
}
return (returnvalue < 0);
}
}
#region WinInet structures
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct InternetPerConnOptionList
{
public int dwSize; // size of the INTERNET_PER_CONN_OPTION_LIST struct
public IntPtr szConnection; // connection name to set/query options
public int dwOptionCount; // number of options to set/query
public int dwOptionError; // on error, which option failed
//[MarshalAs(UnmanagedType.)]
public IntPtr options;
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct InternetConnectionOption
{
static readonly int Size;
public PerConnOption m_Option;
public InternetConnectionOptionValue m_Value;
static InternetConnectionOption()
{
InternetConnectionOption.Size = Marshal.SizeOf(typeof(InternetConnectionOption));
}
// Nested Types
[StructLayout(LayoutKind.Explicit)]
public struct InternetConnectionOptionValue
{
// Fields
[FieldOffset(0)]
public System.Runtime.InteropServices.ComTypes.FILETIME m_FileTime;
[FieldOffset(0)]
public int m_Int;
[FieldOffset(0)]
public IntPtr m_StringPtr;
}
}
#endregion
#region WinInet enums
//
// options manifests for Internet{Query|Set}Option
//
public enum InternetOption : uint
{
INTERNET_OPTION_PER_CONNECTION_OPTION = 75
}
//
// Options used in INTERNET_PER_CONN_OPTON struct
//
public enum PerConnOption
{
INTERNET_PER_CONN_FLAGS = 1, // Sets or retrieves the connection type. The Value member will contain one or more of the values from PerConnFlags
INTERNET_PER_CONN_PROXY_SERVER = 2, // Sets or retrieves a string containing the proxy servers.
INTERNET_PER_CONN_PROXY_BYPASS = 3, // Sets or retrieves a string containing the URLs that do not use the proxy server.
INTERNET_PER_CONN_AUTOCONFIG_URL = 4//, // Sets or retrieves a string containing the URL to the automatic configuration script.
}
//
// PER_CONN_FLAGS
//
[Flags]
public enum PerConnFlags
{
PROXY_TYPE_DIRECT = 0x00000001, // direct to net
PROXY_TYPE_PROXY = 0x00000002, // via named proxy
PROXY_TYPE_AUTO_PROXY_URL = 0x00000004, // autoproxy URL
PROXY_TYPE_AUTO_DETECT = 0x00000008 // use autoproxy detection
}
#endregion
internal static class NativeMethods
{
[DllImport("WinInet.dll", SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool InternetSetOption(IntPtr hInternet, InternetOption dwOption, IntPtr lpBuffer, int dwBufferLength);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Squid를 사용하여 프록시 서버를 구축할 때의 메모업무에 프록시 서버가 필요하기 때문에 그때 필기를 해야 합니다. 1) 설정된 주석 출력 주석 내보내기 전 주석 출력 후 2) 추가 설정(마지막 줄) 다음은 xxx입니다.xxx.xxx.xxx는 글로벌 IP 주소입니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.