,我有以下這裏的代碼片段,即時通訊試圖建立自動更改代理服務器設置:修改代理設置
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");
我的應用程序是一個Windows服務和本地系統賬戶的授權下所運行的擁有完整的權限。
@羅伯特:有了'標準用戶',你的意思是你自己的賬戶?你如何檢查設置是否被改變? – 2011-02-03 13:11:28
在多個帳戶下運行服務後,斷開以太網電纜,等到我在事件查看器中看到消息,說明代理已更改,然後直接檢查註冊表和IE代理設置,並查看沒有更改。 – RobertPitt 2011-02-07 15:51:46