如何使用 c# 将用户输入保存到注册表中?

Posted

技术标签:

【中文标题】如何使用 c# 将用户输入保存到注册表中?【英文标题】:how to save user input into registry using c#? 【发布时间】:2020-10-30 06:11:13 【问题描述】:

尝试将用户输入保存到 Windows 注册表中,如下所示,但是 当我运行应用程序时,我看不到添加到注册表路径中的新值(位于“HKEY_CURRENT_USER\Software\...

实现的代码

double myValue = 0.01;
string key = "path";
myValue= value;
Registry.SetValue(key, "my Value", 
               value.ToString(System.Globalization.CultureInfo.InvariantCulture),
               RegistryValueKind.String);              

【问题讨论】:

【参考方案1】:

您需要指定注册表项的完整路径,而不仅仅是相对于 HKEY_CURRENT_USER 的项。

所以,您的代码应该类似于:

const string userRoot = "HKEY_CURRENT_USER";    
string key = "path";

Registry.SetValue(userRoot + "\\" + key, "my Value", 
    value.ToString(System.Globalization.CultureInfo.InvariantCulture), 
    RegistryValueKind.String);

但是,按照https://docs.microsoft.com/en-us/dotnet/api/microsoft.win32.registrykey?view=dotnet-plat-ext-3.1 的示例使用 RegistryKey 类可能会更简洁

【讨论】:

@user22387 试过什么? Martyn发布的代码或链接页面上使用的方法? @itsme86 两者,问题不在于与其他值一起使用的代码及其工作,而是注册表本身的问题,为什么它不使用新的更新进行更新? @user22387 你是说它在一些 Windows 更新之前就可以工作了吗?这是你第一次提到更新。 @itsme86 不知道你是什么意思?我提到问题不在于代码,而在于它自己没有添加的注册表( myValue ) @user22387 我的意思是你的“...为什么它#s 没有更新新的更新?”评论。确切的关键路径是什么?和WOW64有关系吗?它是 64 位应用程序吗?注册表本身存在实际问题的可能性约为 0%,因此您应该停止思考问题出在哪里。

以上是关于如何使用 c# 将用户输入保存到注册表中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个用户输入保存到微调器?

在 Visual C# 中保存用户输入

如何将用户输入的值传递到 c# 中的请求参数正文中?

如何将用户输入存储在数据库中?

开发用户注册模块

C#中如何保存cookie到本地