I가 여기에 코드 조각 다음 자동으로 프록시 설정 변경 구축을 위해 노력하는 메신저 : 수정 프록시 설정
public class ProxyManager
{
public static bool UnsetProxy()
{
return SetProxy(null);
}
public static bool SetProxy(string Ip,int Port)
{
return SetProxy(Ip + ":" + Port.ToString());
}
public static bool SetProxy(string ProxyAddress)
{
RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
if (ProxyAddress == null)
{
registry.SetValue("ProxyEnable", 0);
}
else
{
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", ProxyAddress.ToString());
}
//Force the update!
registry.Clase();
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
return true;
}
[DllImport("wininet.dll")]
public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);
public const int INTERNET_OPTION_SETTINGS_CHANGED = 39;
public const int INTERNET_OPTION_REFRESH = 37;
}
하지만 프록시 설정이 설정되지 않는 몇 가지 이유
, 나는 알을 메서드가 호출되고 메서드가 호출 된 후 이벤트 관리자에 이벤트를 삽입 할 때 메서드가 올바르게 실행되고 있습니다. 프록시 설정, I'me 그래서 같은 기능이 호출되지 않습니다하지만 어떤 이유 :EventManager.WriteEntry("Proxy Settings Enabled");
ProxyManager.SetProxy("10.222.62.65:8080");
내 응용 프로그램은 윈도우 서비스를하고 로컬 시스템 계정의 권한으로 실행되고있는 모든 권한을가집니다.
@ 로버트 : '일반 사용자'로 자신의 계정을 의미합니까? 그리고 설정이 변경되었는지 어떻게 확인하고 있습니까? –
여러 계정에서 서비스를 실행 한 다음 이더넷 케이블을 분리하고 이벤트 뷰어에서 프록시가 변경되었다는 메시지가 나타날 때까지 기다린 다음 레지스트리와 IE 프록시 설정을 직접 확인하고 변경 사항을 확인하지 마십시오. – RobertPitt
@ 로버트 : 문제는 'CurrentUser'에 대한 레지스트리 설정을 바꾸고 있기 때문에, 그 일을하는 프로세스가 당신처럼 로그온되어 있지 않다면, 당신이 레지스트리의 잘못된 설정을 바꾸고있는 것 같아요. 컴퓨터의 모든 사용자에 대해 별도의 'CurrentUser'가 있음을 기억하십시오. 나는 이것이 당신의 문제인지 완전히 확신 할 수는 없으므로 그것이 다른 것이 될 수 없다는 말은 아닙니다. –