windows - Indhentning af registreringsvej ved hjælp af NtQueryObject

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er nødt til at erhverve registreringsvej ved hjælp af det håndtere i runtime. For dette bruger jeg NtQueryObject-funktionen. Mit problem er, at NtQueryObject giver mig stien i mærkeligt format (se billedet nedenfor).


Indtast billedbeskrivelse her


Jeg tror det er den slags format, du skal bruge, når du skriver drivere, men jeg vil have denne sti konverteret til standard reg-sti, som f.eks.


HKEY\_LOCAL\_MACHINESoftwareMicrosoftWindowsCurrentVersionRun". 


I øjeblikket erstatter jeg


 REGISTRYMACHINEetc


med


HKEY\_LOCAL\_MACHINE \ etc


men denne Wow6432Node-nøgle er et problem. Jeg antager, at dets navn vil variere på tværs af forskellige maskiner, selv 32 bit windows har ikke den nøgle der. Så mit spørgsmål er, er der nogen standard måde at gøre reg path konvertering (måske nogle sej api gør det)?

Bedste reference


Wow6432Node er virkelig en del af registreringsdatabasen til den pågældende nøgle, selvom den er skjult fra 32-bit-processer. Hvis du ser i softwarenøglen med Regedit, finder du Wow6432Node.


På 64-bit systemer både HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run og HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run eksisterer. Afhængigt af hvad du forsøger at gøre, skal du muligvis arbejde med dem begge eller kun en.


Dette beskriver de registreringsnøgler, der berøres af WOW64:


http://msdn.microsoft.com/en-us/library/aa384253\%28v=VS.85\%29.aspx[3]


Du kan eksplicit få adgang til 32-bit eller 64-bit visning af registreringsdatabasen som beskrevet her:


http://msdn.microsoft.com/en-us/library/aa384129\%28v=VS.85\%29.aspx[4]