【问题标题】:Read Registry_binary and convert to string读取 Registry_binary 并转换为字符串
【发布时间】:2013-02-03 00:20:12
【问题描述】:

过去 2 小时我一直在寻找,实际上我只是在寻找愚蠢的东西。

我正在尝试读取 Registry_binary 值并将其转换为字符串。我尝试了一些我在网上找到的东西(包括一些 stackoverflow 帖子),但似乎我无法让它工作:

class Class1 {
    RegistryKey RegKey;
    String keys;

    static void Main() {
        Class1 c=new Class1();
        c.initialize();
    }

    void initialize() {
        RegKey=Registry.LocalMachine.OpenSubKey("the location", true);
        var bytearray=Converter<RegKey.GetValue("key"), String[keys]>;
        Console.WriteLine(bytearray);
        System.Threading.Thread.Sleep(5000);
    }
}

我也试过用:

keys=keys+BitConverter.ToString(System.byte[RegKey.GetValue("key")]);

根据要求:

RegKey=Registry.LocalMachine.OpenSubKey("Software\\MXstudios\\riseingtesharts", true);
keys=RegKey.GetValue("key");

这将输出System.Bytes[]

【问题讨论】:

  • 你想如何将其转换为字符串?你想得到什么样的字符串?
  • @SLaks 我希望将registry_binary(里面有一个十六进制值)转换为普通的文本字符串,如果可能的话是十六进制格式
  • 你能给我们一个registry_binary的例子和预期的结果字符串吗?
  • @deej 在标签 On request 下添加了它。我希望在注册表中保留输出,在这种情况下为:84-F6-61-B0-06-E5-55-FF-36

标签: c# tostring registrykey


【解决方案1】:

假设钥匙已打开

var valueName = "some binary registry value";
var valueKind = registryKey.GetValueKind(valueName);
if (valueKind == RegistryValueKind.Binary)
{
    var value = (byte[])registryKey.GetValue(valueName);
    var valueAsString = BitConverter.ToString(value);
}

编辑:一些解释:

GetValue 返回对象,BitConverter.ToString 获取字节数组作为参数。因此,我们将 GetValue 返回的值转换为 byte[],以便能够在 BitConverter.ToString 中使用它。但首先我们检查注册表值是否实际上是二进制的。然后你可以安全地将它转换为 byte[],因为 GetValue 返回的二进制值对象实际上是字节数组。

【讨论】:

    猜你喜欢
    • 2016-11-18
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多