2013-02-03 145 views
2

我一直在寻找最近2个小时,而我似乎只是一直在寻找愚蠢。阅读Registry_binary并转换为字符串

我正在尝试读取Registry_binary值并将其转换为字符串。我试过几件事情,我在网上找到(includeing一些计算器的职位),但看来我无法得到它的工作:

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[]

+0

你想如何将其转换为字符串?你想要什么样的字符串? – SLaks

+0

@SLaks我希望将registry_binary(里面有一个十六进制值)转换为普通文本字符串,如果可能的话用十六进制格式 –

+0

你可以给我们一个registry_binary的例子和预期的结果字符串吗? – deej

回答

5

假设键被打开

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

+0

经过一个真正的痛苦思想和你的帮助,我设法做到了:D! (它的2:30在这里,并认为我应该已经睡觉:P)我的回答将是RegKey = Registry.LocalMachine.OpenSubKey(“字符串到位置”,真正的); string keys = BitConverter.ToString((byte [])RegKey.GetValue(“key”));我感谢你分享你的帮助Deej。 –