UnauthorizedAccessException dans ComRegisterFunction lorsque l'accès aux registres sur Win 7 64
-
19-09-2019 - |
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();
}
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