所以,在问我的问题时,我给了自己更多的搜索标准的想法,这最终让我找到了这篇文章,其中有人试图做与我现在完全相同的事情:
https://social.technet.microsoft.com/Forums/windowsserver/en-US/7a3011ae-6bea-46e7-80c8-e9bcb93a8cf9/how-can-i-update-the-registry-with-powershell-without-logging-offrebooting?forum=winserverpowershell
它是Powershell,但我将其转换为c#。呼叫后
InternetSetOption
,这些更改会立即反映出来。
[DllImport("wininet.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);
const int INTERNET_OPTION_SETTINGS_CHANGED = 39;
const int INTERNET_OPTION_REFRESH = 37;
using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Registry64))
using (var myKey = hklm.OpenSubKey(@"[..]\Software\Microsoft\Windows\CurrentVersion\Internet Settings", true))
{
if (myKey != null)
{
myKey.SetValue("ProxyServer", "00.00.00.00:0000", RegistryValueKind.String);
myKey.SetValue("ProxyEnable", 1, RegistryValueKind.DWord);
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
}
}