在嘗試修復軟體包中的奇怪錯誤訊息時,我在註冊表中查找,並注意到某些值看起來「瘋狂」。
例如:
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
這沒什麼好擔心的。事實上,您看到的「正常」值是二進位或十六進位值,轉換為我們可以輕鬆讀取的值。
答案3
關鍵將儲存二進位或十六進位數據,這些數據不一定直接轉換為可讀字元;因此,當您嘗試將其視為文字時,程式將盡最大努力使用機器的預設字元集(1 個字元通常是 1 個位元組)將其轉換為字串,這將導致亂碼,因為資料未輸入字符形式。
二進制和位元組資料可以表示任意數量的事物,這取決於您決定如何解釋它;例如,如果您採用隨機 32 位元整數,可以說1,342,749作為二進制,這將是00000000 00010100 01111101 00011101十六進位表示為0x00147D1D現在,如果我們嘗試使用 Ascii 字符集將其讀取為字符,我們會得到??}?(更準確地說,NUL - DC4 - } - GS);這似乎完全是胡言亂語。
低階數據,特別是在位元和位元組級儲存時,不保證它可以作為字元查看,但這不會以任何方式使數據變得亂碼 - 通常程式直接保存資料是最有效/安全的/等等位/位元組格式;特別是例如壓縮技術。