Come faccio ad avere il vero percorso di una chiave del registro?
-
18-09-2019 - |
Domanda
Se si esegue un'applicazione a 32 bit su un computer a 64 bit (sto usando Windows 7) e si scrive questo codice
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\XXX")
sarà effettivamente ottenere la chiave da
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XXX
e non
HKEY_LOCAL_MACHINE\SOFTWARE\XXX
Progromatically dato un RegistryKey come faccio a lavorare fuori il vero percorso nel Registro di sistema?
Soluzione
E 'molto il Vero Percorso, un'applicazione a 32 bit sarà sempre accedere alla chiave di registro in tale sottochiave. Ottenere il valore che un'applicazione a 64 bit vedrebbe è tecnicamente possibile, non solo con .NET. Dovrete P / Invoke RegOpenKeyEx () ed altri in modo da poter specificare la KEY_WOW64_64KEY bandiera.
UPDATE: affrontato in .NET 4.0 con RegistryKey.OpenBaseKey (). L'argomento RegistryView consente di specificare la vista desiderata. Usereste RegistryView.Registry64 in questo caso.
Altri suggerimenti
Si tratta di una funzione di se il programma è stato compilato per 32 o 64 bit di Windows e se è in esecuzione su 32 o 64 bit di Windows. Vedere se qui di seguito aiuta: