소프트웨어 패키지에서 이상한 오류 메시지를 수정하려고 시도하는 동안 레지스트리를 뒤지고 있었는데 일부 값이 '미친' 것처럼 보이는 것을 발견했습니다.
예를 들어:
HKEY_CLASSES_ROOT\Installer\Components\71CE92CC2CB71D119A12000A9CE1A22A
다음을 포함합니다:
signer.dll REG_MULTI_SZ
OC~jzh?Vl@K]-%4u9Xx!Intel_VBA_English>ZqT]jI{jf(=1&L[-81-]
상당수의 다른 항목에는 이러한 스타일의 횡설수설이 있습니다. 나에게 이것은 실제 데이터 값보다 뭔가 잘못된 것처럼 보입니다. 이것이 레지스트리가 손상되었다는 신호일 가능성이 있습니까?
답변1
그 모든 것이 충분히 합리적으로 보입니다. 결국 레지스트리는 기계가 읽을 수 있는 데이터를 포함하도록 설계되었습니다.
답변2
그건 걱정할 필요가 없습니다. 실제로 표시되는 '정상' 값은 쉽게 읽을 수 있는 값으로 변환된 이진수 또는 16진수 값입니다.
답변3
키는 이진수 또는 16진수 데이터를 저장하며, 읽을 수 있는 문자로 직접 변환할 필요는 없습니다. 따라서 이를 텍스트로 보려고 하면 프로그램은 기계의 기본 문자 세트(일반적으로 1문자는 1바이트)를 사용하여 문자열로 변환하기 위해 최선을 다할 것입니다. 이는 데이터가 입력되지 않았기 때문에 횡설수설로 이어질 것입니다. 문자형.
바이너리 및 바이트 데이터는 해석 방법에 따라 많은 것을 나타낼 수 있습니다. 예를 들어 임의의 32비트 정수를 취하는 경우1,342,749바이너리로서 이것은00000000 00010100 01111101 0001110116진수는0x00147D1D이제 이것을 Ascii 문자 세트를 사용하여 문자로 읽으려고 하면 다음과 같은 결과를 얻게 됩니다.??}?(더 정확하게는 NUL - DC4 - } - GS); 완전 횡설수설인 것 같습니다.
낮은 수준의 데이터, 특히 비트 및 바이트 수준에 저장된 경우 문자로 볼 수 있는 보증이 없지만 어떤 방법으로든 데이터를 횡설수설하게 만들지는 않습니다. 프로그램에서 데이터를 직접 저장하는 것이 가장 효율적/안전한 경우가 많습니다. 비트/바이트 형식으로; 특히 압축 기술을 예로 들 수 있습니다.