c# - 在 C# 中为所有用户设置注册表项

标签 c# registry

我有一个应用程序在安装过程中更改了一些注册表值。

我正在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings 中更改 ProxyEnable 和 ProxyServer。

这在 .NET 安装程序中作为“Just Me”安装时效果很好,但我想为计算机上的所有用户(所有人)设置这些值。

我的应用程序是一个代理服务器,它将记录它收到的所有 URL 请求。为此,需要在 Internet 设置中设置代理值。我希望这作为安装过程的一部分发生,而不是管理员必须为所有用户设置它。

我知道这可以通过组策略来完成,但是一些使用这个应用程序的机器将有多个用户并且没有组策略(XP Home 等)。

有没有办法更改提到的注册表项,以便所有用户的 IE 都设置了 Prxy 设置?

我目前使用的代码是:

    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);
    }

最佳答案

将它添加到 HKEY_USERS 是不够的(?)

关于c# - 在 C# 中为所有用户设置注册表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2088221/

相关文章:

c# - NHibernate 在对持久实体调用 Session.Save 时不会抛出异常

c# - 名称为( Controller 名称)的 RedirectToAction 无法定位操作

c# - SSIS 派生列将小数转换为 .00

windows - RegOpenKeyEx 在失败时返回什么错误代码?

powershell - 在 PowerShell 中,如何获取具有特定属性的所有注册表项?

c# - 使用 NuGet 包的本地源代码调试和编辑代码

c# - 在 ASP.NET 中使用 Response.write 生成文件时使用 updateprogress

python - 在 Windows 7 上打开注册表项时出现问题

windows - 如何在 Windows shell 中向文件类型添加辅助动词?

uwp - 如何使用 Regedit 实用程序查看 win32 uwp 应用程序的虚拟注册表