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