Установка ключа реестра для всех пользователей в C # - PullRequest
2 голосов
/ 18 января 2010

У меня есть приложение, которое изменяет некоторые параметры реестра во время установки.

Я меняю ProxyEnable и ProxyServer в HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings.

Это прекрасно работаетоднако при установке «Just Me» в установщике .NET я хотел бы установить эти значения для всех пользователей компьютера (Все).

Мое приложение является прокси-сервером, который будет регистрировать все запросы URL, которые онополучает.Для этого необходимо, чтобы значения прокси были настроены в настройках Интернета.Я хотел бы, чтобы это происходило как часть процесса установки вместо того, чтобы администратор устанавливал его для всех пользователей.

Я знаю, что это можно сделать с помощью групповой политики, но на некоторых компьютерах, которые будут использовать это приложение, будет несколькопользователи и отсутствие групповой политики (XP Home и т. д.).

Можно ли изменить упомянутые ключи реестра, чтобы для всех пользовательских IE были установлены параметры Prxy?

Код Iв настоящее время использую это:

    private void EnableProxy(string proxy) {
        using(RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true)) {
            registry.SetValue("ProxyEnable", 1);
            registry.SetValue("ProxyServer", proxy);
        }

        settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED,
            IntPtr.Zero, 0);
        refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
    }

    private void DisableProxy() {
        using(RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true)) {
            registry.SetValue("ProxyEnable", 0);
            registry.DeleteValue("ProxyServer", false);
        }

        settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED,
            IntPtr.Zero, 0);
        refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
    }

Ответы [ 3 ]

0 голосов
/ 18 января 2010

Вы пробовали использовать Registry.LocalMachine?

http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.localmachine.aspx

0 голосов
/ 18 января 2010

Я нашел ответ с помощью http://www.pctools.com/guides/registry/detail/1147/.

Мне нужно было создать ProxySettingsPerUser и установить его равным 0, затем установить ProxyEnable и ProxyServer для LocalMachine.

0 голосов
/ 18 января 2010

Добавление его к HKEY_USERS будет недостаточно (?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...