Existe uma maneira de descobrir que tipo de valor do Registro foi consultado no Process Monitor?

2

NOME NÃO ENCONTRADO está sendo exibido nos resultados -coluna Monitor do processo , então eu mesmo criaria o valor. Mas eu não sei se é um Binário , String ou, digamos, > DWORD que foi tentado acessar. Alguém sabe se há uma maneira de descobrir isso em caso de RegQueryValue ?

    
por Starhowl 08.07.2018 / 19:43

1 resposta

1

Não exatamente, mas podemos adivinhar em alguns casos.

A operação RegQueryValue no Process Monitor corresponde essencialmente ao RegQueryValueEx função sendo chamada. Essa função tem um parâmetro chamado lpType , mas é ...

A pointer to a variable that receives a code indicating the type of data stored in the specified value.

Ênfase minha. Está lá para que as aplicações possam ser informadas do tipo do valor que receberam. ( RegQueryValueEx não se preocupa com tipos de dados, apenas passa bytes. O trabalho do programa é interpretar os bytes.) Mesmo que um programa tenha especificado o tipo por algum motivo, o Process Monitor não reporta o valor na entrada da função. , apenas na saída bem sucedida.

No entanto, ele informa "comprimento". Por razões não claras, esse não é realmente o valor lpcbData que o aplicativo fornece para especificar o tamanho do buffer para o resultado - em um sistema de 64 bits, é necessário subtrair 12 para obter o original. Um valor DWord ocupa 4 bytes, um valor QWord ocupa 8 bytes e todos os outros tipos são de tamanho variável. (Programas também podem preparar nenhuma memória antes de chamar a função apenas para verificar se o valor existe.) Portanto, se o "comprimento" relatado pelo Process Monitor for 16, o programa está esperando um bloco de dados de 4 bytes, que é quase certamente um DWord.

    
por 08.07.2018 / 23:12