object
取得したレジストリ値を からに変換しようとしていますbyte[]
。として保存されREG_BINARY
ます。で使っBinaryFormatter
てみましたMemoryStream
。ただし、不要なオーバーヘッド情報が追加されます。関数を実行してバイト配列を文字列に変換したときに、これを観察しましたConvert.ToBase64String(..)
。これらの機能を実行しているのは、暗号化されたキーのレジストリへの保存と取得をテストしているためです。
11184 次
3 に答える
8
REG_BINARY の場合は、取得時に既にバイト配列である必要があります... にキャストすることはできませんかbyte[]
?
または、コードで REG_BINARY であることをまだ確認していない場合は、次を使用できます。
byte[] binaryData = value as byte[];
if (binaryData == null)
{
// Handle case where value wasn't found, or wasn't binary data
}
else
{
// Use binaryData here
}
于 2011-01-13T20:24:20.303 に答える
5
これを試して。すでに REG_BINARY である場合は、キャストするだけです。
static byte[] GetFoo()
{
var obj = Microsoft.Win32.Registry.GetValue("HKEY_LOCAL_MACHINE\\Software", "foo", null);
//TODO: Write a better exception for when it isn't found
if (obj == null) throw new Exception();
var bytearray = obj as byte[];
//TODO: Write a better exception for when its found but not a REG_BINARY
if (bytearray == null) throw new Exception();
return bytearray;
}
于 2011-01-13T20:28:24.340 に答える
0
Convert.ToBase64String で変換した場合も同様に取り出せるはずです。
string regValueAsString = (string)regValueAsObj;
byte[] buf = Convert.FromBase64String(regValueAsString);
于 2011-01-13T20:24:00.793 に答える