我正在尝试从注册表中读取数据@“”SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ RecentDocs \“
我得到的返回值是System.byte [],当我将其转换为类似建议here的字符串时。
它有效(我认为)。但我只收到1个字母而不是整个字符串。
也许我做错了什么?我很确定那里不会只有一个字母..
我已尝试Encoding.ASCII.GetString(bytes);
和Encoding.UTF8.GetString(bytes);
以及Encoding.Default.GetString(bytes);
,但它们只返回1个字符/字母。
我也查看了这个link。但对于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);
提前感谢您的任何帮助:)
答案 0 :(得分:3)
字符串使用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方块实际上是零字符。
答案 1 :(得分:2)
您确定编码是ASCII吗?
我怀疑某些UTF如Encoding.UTF8
或Encoding.Unicode
- 试试......