来自注册表的Byte[]只返回一个字母
本文关键字:一个 返回 注册表 Byte | 更新日期: 2023-09-27 18:05:22
我正在尝试从注册表读取数据@ "SOFTWARE'Microsoft'Windows'CurrentVersion'Explorer'RecentDocs'"
返回值是System。byte[],当我像这里建议的那样将它转换为字符串时
它工作(我认为)。但是我只返回了一个字母,而不是整个字符串。
也许我做错了什么?我敢肯定里面不可能只有一个字母。我试过Encoding.ASCII.GetString(bytes);
和Encoding.UTF8.GetString(bytes);
和Encoding.Default.GetString(bytes);
,但它都只返回1个字符/字母。
我也签出了这个链接。但这是c++的,我用的是c#没有看到他们建议的方法(RegGetValueA)
下面是我的代码: RegistryKey pRegKey = Registry.CurrentUser;
pRegKey = pRegKey.OpenSubKey("SOFTWARE''Microsoft''Windows''CurrentVersion''Explorer''RecentDocs''");
Object val = pRegKey..GetValue("0");
byte[] bytes = (byte[])pRegKey.GetValue ("0");
string str = Encoding.ASCII.GetString(bytes);
System.Windows.MessageBox.Show("The value is: " + str);
提前感谢您的帮助:)
字符串使用UTF-16编码,因此您应该使用Encoding.Unicode
。
但它似乎不是只是 UTF-16编码的字符串,还有一些更多的数据。对于我来说,(当解码为UTF-16时),它显示为
Stažené soubory□Š6□□□□□Stažené soubory.lnk□T□□뻯□□□□*□□□□□□□□□□□□Stažené soubory.lnk□6□
Stažené soubory在捷克语中的意思是下载,这是我的Windows使用的语言。上面文本中的U+25A1正方形实际上是零字符。
您确定编码是ASCII吗?
我会怀疑一些UTF,如Encoding.UTF8
或Encoding.Unicode
-试试…