Таким образом, этот код уже работает для настройки My Proxy Pac, но проблема в том, что RegKey.SetValue ("AutoConfigURL") или RegKey.DeleteValue ("AutoConfigURL") работают только 1 раз.
Так что мне нужно повторно запустить мои приложения для удаления или установки заново.Даже я использую закрытие формы, если я устанавливаю значение SetValue или сначала что-то делаю с кнопкой.Во второй раз это не сработает.
Есть ли что-то, что я пропустил?
[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;
bool settingsReturn, refreshReturn;
public VPNForm()
{
InitializeComponent();
ConnectionChecker();
}
//When Button Click On or Off By Button Text
private void VPNButton_Click(object sender, EventArgs e)
{
RegistryKey RegKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", RegistryKeyPermissionCheck.ReadWriteSubTree);
if (VPNButton.Text == "ON")
{
RegKey.SetValue("AutoConfigURL", "mypaclink/proxy.pac");
settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
}
else
{
if(RegKey.GetValue("AutoConfigURL") != null)
{
RegKey.DeleteValue("AutoConfigURL");
}
settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
}
RegKey.Close();
ConnectionChecker();
}
//Delete Proxy Setting
private void VPNForm_FormClosing(object sender, FormClosingEventArgs e)
{
RegistryKey RegKey2 = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
if (RegKey2.GetValue("AutoConfigURL") != null)
{
RegKey2.DeleteValue("AutoConfigURL");
}
settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
RegKey2.Close();
}
//Check Condition Proxy is ON or OFF
public void ConnectionChecker()
{
RegistryKey RegKey3 = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
if (RegKey3.GetValue("AutoConfigURL") == null)
{
VPNButton.Text = "ON";
ConnectionLabel.Text = "Disconnected";
}
else
{
VPNButton.Text = "OFF";
ConnectionLabel.Text = "Connected";
}
RegKey3.Close();
}
Edit # 1:
Так что я нахожу проблему не внутри моего кода, а в моем собственном ПК, только у меня с 5 ПК.Не знаю почему, сейчас я пытаюсь обновить его с Windows 7 до Windows 10. Если кто-нибудь знает, как найти проблему, скажите, пожалуйста, спасибо.Я использую 4 ПК с Windows 7 и 1 Windows 10 Все работает отлично ..