来自注册表的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);

提前感谢您的帮助:)

来自注册表的Byte[]只返回一个字母

字符串使用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.UTF8Encoding.Unicode -试试…