Registre.GetValue toujours retourner null

j'ai la clé suivante dans mon registre:

sous:HKEY_LOCAL_MACHINESOFTWARERSA j'ai de la valeur de l'objet de l'appel - WebExControlManagerPath et sa valeur est c:

je suis en train de faire ceci:

var r = Registry.GetValue(@"HKEY_LOCAL_MACHINESOFTWARERSA", "WebExControlManagerPth",null);

if(r!=null)
    ProcessAsUser.Launch(ToString());

Mais r la valeur est toujours null.

enter image description here

des idées?

13
demandé sur marc_s 2012-02-29 04:30:18

6 réponses

vous n'ACCÉDEZ PAS à la ruche HKEY_LOCAL_MACHINE de la même façon que vous le feriez dans C# dans les scripts par lots. Vous appelez Registry.LocalMachine, comme suit:

        RegistryKey myKey = Registry.LocalMachine.OpenSubKey( @"Software\RSA", false);
        String value = (String)myKey.GetValue("WebExControlManagerPth");

        if (!String.IsNullOrEmpty(value))
        {
            ProcessAsUser.Launch(ToString());
        }

mise à Jour:

si elle retourne null, définissez votre architecture de construction à tout CPU. Le système d'exploitation peut virtualiser les registres 32 bits et 64 bits différemment. Voir:http://msdn.microsoft.com/en-us/library/windows/desktop/aa965884%28v=vs.85%29.aspx, lecture 64bit Registre à partir d'une application 32 bits