c#注册表设置注册表ValueKind注册表

c#注册表设置注册表ValueKind注册表,c#,winforms,registry,C#,Winforms,Registry,嗨,我有下面的代码来设置注册表值 string encyrptedParam = Class.Encrypt("TEst1"); string encryptedUserWarning = Class.Encrypt("Test2;TEst3"); using (var rk = RegistryHelpers.GetRegistryKey()) { rk.SetValue("Parameters", encyrptedParam,RegistryValueKind.Str

嗨,我有下面的代码来设置注册表值

string encyrptedParam       = Class.Encrypt("TEst1");
string encryptedUserWarning = Class.Encrypt("Test2;TEst3");

using (var rk = RegistryHelpers.GetRegistryKey())
{
    rk.SetValue("Parameters", encyrptedParam,RegistryValueKind.String);
    rk.SetValue("UserWarnings", encryptedUserWarning, RegistryValueKind.MultiString);
}
设置“UserWarnings”时,我遇到以下错误: 值对象的类型与指定的注册表ValueKind不匹配,或者该对象无法正确转换

让我们知道我做错了什么


谢谢

如果有人需要,基本上您希望以字符串数组发送

rk.SetValue("UserWarnings", new [] {encryptedUserWarning}, RegistryValueKind.MultiString);

如果有人需要这个,基本上您希望发送一个字符串数组

rk.SetValue("UserWarnings", new [] {encryptedUserWarning}, RegistryValueKind.MultiString);

多字符串类似于string1\0string2\0\0-您确定其格式正确吗。用户警告必须类似于由\0终止的用户警告字符串的空分隔字符串。您的Class.Encrypt本质上使其成为string,因此更好地将RegistryValueKind.string用于UserWarnings以及在您解密split by之后;通常不可能以字符串形式存储加密数据。除非加密方法使用Convert.ToBase64String()。正确的方法是避免严格键入,让加密方法返回byte[]并使用RegistryValueKind.BinaryMultiString类似于string1\0string2\0\0-您确定其格式正确吗。用户警告必须类似于由\0终止的用户警告字符串的空分隔字符串。您的Class.Encrypt本质上使其成为string,因此更好地将RegistryValueKind.string用于UserWarnings以及在您解密split by之后;通常不可能以字符串形式存储加密数据。除非加密方法使用Convert.ToBase64String()。正确的方法是避免严格键入,让加密方法返回byte[]并使用RegistryValueKind.Binary