Пытаясь исправить странное сообщение об ошибке в программном пакете, я копался в реестре и заметил, что некоторые значения выглядят «сумасшедшими».
Например:
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); что, по-видимому, является полной тарабарщиной.
Данные низкого уровня, особенно хранящиеся на уровне битов и байтов, не имеют гарантии того, что их можно просматривать как символы, но это ни в коем случае не делает данные бессмыслицей — зачастую для программ наиболее эффективно/безопасно и т. д. сохранять данные непосредственно в форматах битов/байтов; в частности, например, с помощью методов сжатия.