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 内で使用できるようにします。ただし、最初に、レジストリ値が実際にバイナリであるかどうかを確認します。バイナリ値の GetValue によって返されるオブジェクトは実際にはバイト配列であるため、安全に byte[] にキャストできます。

于 2013-02-03T01:01:05.560 に答える