gpt4 book ai didi

c# - 未使用 C# 应用程序修改注册表

转载 作者:行者123 更新时间:2023-11-30 15:45:15 31 4
gpt4 key购买 nike

我有以下在 Windows 服务中运行的代码片段。

该服务监视 LAN 并相应地更改代理设置,问题是由于某种原因代理设置没有更新。

应用程序在本地系统帐户下运行,但注册表仍未更改:

有人有什么想法吗?

using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true))
{
if (key != null)
{
key.SetValue("ProxyEnable", Convert.ToInt32(enable), RegistryValueKind.DWord);

//I/O Flushes
key.Flush();
key.Close();
return;
}

//Exception thrown here to test if key is valid.
}

最佳答案

如果您是在本地系统帐户中运行,则没有 HKEY_Current_User。

事实上,在很多情况下,即使您以用户帐户运行服务,也不会有 HKEY_CURRENT_USER,因为该服务一般不会创建完整的 Windows 站——它只是使用用户帐户进行身份验证,而不是个人资料。

这是服务无法使用许多支持 COM 自动化的应用程序的几个原因之一。

不过,您将能够访问 HKEY_LOCAL_MACHINE。

编辑如果您以特定用户帐户运行您的服务(或者如果您的服务中的线程模拟特定用户帐户),您可以使用 RegOpenCurrentUser 函数检索所需 key 的句柄,然后使用 RegistryKey。 FromHandle 从 .Net API 中使用它。

关于c# - 未使用 C# 应用程序修改注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5352901/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com