Question

J'ai [ComRegisterFunction] que je me sers pour enregistrer une extension Internet Explorer BHO. Lors de l'inscription sur Windows 64 bits 7 machines, un UnauthorizedAccessException est lancé sur l'appel à subKey.SetValue ( "NoExplorer", 1).

Le registre semble avoir de BHO situé @ \ HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Objets Browser Helper, cependant, je les ai même exception en essayant d'y inscrire. Toute aide serait appréciée.

[ComRegisterFunction]
public static void RegisterBho(Type type) {  
    string BhoKeyName= "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects";

    RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(BhoKeyName, true) ?? 
                              Registry.LocalMachine.CreateSubKey(BhoKeyName);

    if(registryKey == null) throw new ApplicationException("Unable to register Bho");

    registryKey.Flush();
    string guid = type.GUID.ToString("B");

    RegistryKey subKey = registryKey.OpenSubKey(guid) ?? registryKey.CreateSubKey(guid);

 if (subKey == null) throw new ApplicationException("Unable to register Bho");

 subKey.SetValue("NoExplorer", 1);
    registryKey.Close();
 subKey.Close();

}
Était-ce utile?

La solution 2

figured it out. Je devais ajouter ce qui suit pour le faire fonctionner. Je ne sais pas pourquoi il a travaillé dans d'autres versions de l'OS

RegistrySecurity rs = new RegistrySecurity();

rs.AddAccessRule(new RegistryAccessRule(user,
            RegistryRights.FullControl,
            InheritanceFlags.ObjectInherit,
            PropagationFlags.InheritOnly,
            AccessControlType.Allow));

RegistryKey subKey = registryKey.OpenSubKey(guid) ??    registryKey.CreateSubKey(guid, RegistryKeyPermissionCheck.Default, rs);

Autres conseils

Vous devez exécuter avec des privilèges d'administrateur.

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