Я занимаюсь проектом по виртуализации приложений.Поэтому я подключаю приложения на уровне NT и буду направлять вызовы реестра в мой виртуальный реестр.При запуске любого приложения, если я иду в File -> Open .. У меня есть несколько обращений к реестру, как показано ниже:
ZwOpenKey(registry key path)
-> оно производит дескриптор ex: (0x04e8) ZwQueryKey(0x4ea,...)
Process Monitor сообщает, что и открытие, и запрос выполняются для одного и того же ключа.Я сам проверил и подтвердил, что это тот же ключ.
Кроме того, ключ запроса дал правильный результат для API ключа запроса.Это 2-байтовое различие не для всех открытых и ключевых случаев запроса.
Как и почему приложение меняет дескриптор с 0x4e8
на 0x4ea
, прежде чем оно вызовет querykey
?
Я также проверил вызов ZWDuplicateObject
между open и querykey, однако api duplicateobject не вызывается.
Кто-нибудь может сказать, как изменяется этот дескриптор?