2011-01-13 3 views
0

object에서 검색된 레지스트리 값을 byte[]으로 변환하려고합니다. REG_BINARY으로 저장됩니다. 나는 BinaryFormatterMemoryStream을 사용해 보았습니다. 그러나, 내가 원하지 않는 오버 헤드 정보를 추가합니다. 이 함수는 Convert.ToBase64String(..) 함수를 수행하여 바이트 배열을 문자열로 변환 할 때 이것을 관찰했습니다. 레지스트리에서 암호화 된 키를 저장하고 검색하기 때문에 이러한 기능을 수행하고 있습니다.개체를 바이트 []

답변

7

이미 당신이 그것을 검색 할 바이트 배열 ... 당신은 그냥 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 
} 
+0

네, 답이 맞습니다. 나는 잠시 동안 C#을 사용하지 않았으므로 분명히 녹슬 었습니다. 확실한 답변을 게시 주셔서 감사합니다 :) –

0

Convert.ToBase64String을 사용하여 변환 한 경우 마찬가지로 가져올 수 있습니다. 그것은 REG_BINARY 다음의 경우

string regValueAsString = (string)regValueAsObj; 
byte[] buf = Convert.FromBase64String(regValueAsString); 
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; 
} 
관련 문제