3

我一直在寻找过去的 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[]

4

1 回答 1

6

假设密钥已打开

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 返回的二进制值对象实际上是字节数组。

于 2013-02-03T01:01:05.560 回答