Windows 登錄中的這些值是不是很瘋狂?

Windows 登錄中的這些值是不是很瘋狂?

在嘗試修復軟體包中的奇怪錯誤訊息時,我在註冊表中查找,並注意到某些值看起來「瘋狂」。

例如:

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);這似乎完全是胡言亂語。

低階數據,特別是在位元和位元組級儲存時,不保證它可以作為字元查看,但這不會以任何方式使數據變得亂碼 - 通常程式直接保存資料是最有效/安全的/等等位/位元組格式;特別是例如壓縮技術。

相關內容