Question

J'ai donc utilisé RegEdit pour ajouter ce qui suit au registre sur mon poste de travail:

HKLM \ Software \ Foo \ Bar

La barre a une paire k / v de "wtf" / "idk".J'ai vérifié que ces changements "prenaient" en fermant regedit et en le rouvrant.Hé, ils sont toujours là!Swell.

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

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

Le problème est que la clé est nulle.

Quand...

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

Est appelé, Foo n'apparaît pas parmi les nombreux SubKeyNames.

Donc, il me manque manifestement quelque chose de stupide.Que me manque-t-il précisément?

Était-ce utile?

La solution

Si vous exécutez un processus 32 bits sur une version 64 bits de Windows, le processus 32 bits (votre application de test) n'est pas toujours en mesure de voir les clés que vous avez créées à l'aide de regedit 64 bits.

Essayez d'exécuter votre application en 64 bits ou utilisez regedit pour ouvrir la clé en utilisant le chemin HKLM\SOFTWARE\Wow6432Node\Foo\Bar.

Vous pouvez en savoir plus sur 32 bitset les données d'application 64 bits dans le registre sur MSDN.

Autres conseils

Peut-être un problème x64?Lors de la lecture du registre dans un processus x86, vous êtes redirigé vers le Software \ Wow6432node.

Essayez de l'ouvrir en lecture seule Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames() probablement que vous n'obtiendrez que ceux dans lesquels vous pouvez écrire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top