Essas cadeias são provavelmente texto ASCII interpretado como Unicode. A maioria das funções da API do Windows que usam parâmetros de string tem duas versões, uma para texto "ANSI" de 8 bits e outra para texto Unicode (UTF-16). Se forem cometidos erros , um buffer contendo texto de 8 bits pode ser interpretado como um erro Unicode, fazendo com que pares de caracteres sejam quebrados em caracteres Unicode de 16 bits. Devido ao layout do espaço de ponto de código Unicode, isso quase sempre produz caracteres asiáticos. Eu suspeito que alguns programas usaram a versão errada de RegCreateKeyEx
, mutilando seus nomes de chave ASCII em texto asiático sem sentido.
Por exemplo, se você mantiver This is a test string
dessa maneira, obterá 桔獩椠整瑳猠牴湩�
. Desfazendo Awesome program v2.0
produz 睁獥浯牰杯慲㉶〮
.
Para tentar reverter os danos, você pode usar o PowerShell!
[System.Text.Encoding]::ASCII.GetString([System.Text.Encoding]::Unicode.GetBytes((gcb)))
Abra uma janela do PowerShell (Windows + R, powershell
), cole esse comando, copie o nome da chave misteriosa do Editor do Registro, volte para o PowerShell e pressione Enter. (O comando puxa o texto da sua área de transferência.) Ele imprimirá a versão mais ou menos original; certas combinações de caracteres ASCII podem criar sequências UTF-16 inválidas e não sobreviver à viagem de ida e volta. O último caractere da string original pode ser substituído por ??
se contiver um número ímpar de caracteres.
A exclusão dessas chaves pode fazer com que os programas de tratamento incorreto de texto parem de funcionar. Seus propósitos provavelmente se tornarão mais claros quando você souber o que eles pretendem chamar.