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?

È stato utile?

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:

http: / /social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/92f962d6-7f5e-4e62-ac0a-b8b0c9f552a3

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top