Ho aggiunto una chiave di registro, ma non riesco a trovarla a livello di programmazione

StackOverflow https://stackoverflow.com/questions/7363768

  •  28-10-2019
  •  | 
  •  

Domanda

Quindi ho usato Regedit per aggiungere quanto segue al registro sulla mia workstation:

HKLM software foo bar

La barra ha una coppia AK/V di "WTF"/"IDK". Ho verificato che questi cambiamenti "hanno preso" chiudendo Regedit e riaprindolo. Ehi, sono ancora lì! Rigonfiamento.

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar");

if (key != null)
{
    var = key.GetValue("wtf").ToString();
}

Il problema è che la chiave è nulla.

Quando. . .

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()

Si chiama, Foo non si presenta tra i non nomi dei subkey.

Quindi, ovviamente mi manca qualcosa di stupido. Cosa mi manca specificamente?

È stato utile?

Soluzione

Se si esegue un processo a 32 bit su una versione a 64 bit di Windows, il processo a 32 bit (l'applicazione di test) non è sempre in grado di vedere i tasti creati utilizzando regedit a 64 bit.

Prova a eseguire l'applicazione come 64 bit o usa regedit per aprire la chiave usando il percorso HKLM\SOFTWARE\Wow6432Node\Foo\Bar.

Puoi leggere di più su Dati dell'applicazione a 32 bit e 64 bit nel registro su msdn.

Altri suggerimenti

Potrebbe essere un problema X64? Quando leggi dal registro in un processo X86, viene reindirizzato al software wow6432node.

Prova ad aprirlo solo per lettura Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames() Probabilmente stai ottenendo solo quelli in cui sei in grado di scrivere.

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