J'ai créé un composant logiciel enfichable MMC qui lance le code dans un nouveau domaine d'application et une partie du code vérifie une clé de registre. Si je vérifie la clé dans le processus d'accrochage, cela fonctionne, mais le code dans le nouvel appdomain renvoie une exception de sécurité. Si je charge le code dans un nouveau domaine d'application à partir d'une console ou d'une application Windows, cela fonctionne correctement.Le nouveau composant AppDomain de MMC Snap-In n'obtient pas les privilèges élevés pour le contrôle de compte d'utilisateur
Voici le code:
public class SimpleMMCSnapIn : SnapIn
{
public SimpleMMCSnapIn()
{
RegistryKey archerKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft", true); //this call works
Evidence baseEv = AppDomain.CurrentDomain.Evidence;
Evidence newEv = new Evidence(baseEv);
AppDomainSetup setup = new AppDomainSetup { ApplicationBase = "<pathtobin>" };
AppDomain domain = AppDomain.CreateDomain("MigratorDomain", newEv, setup);
domain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
IWork migrator = (IWork)domain.CreateInstanceAndUnwrap("CheckRegistry", "CheckRegistry.CheckRegistry");
migrator.Work();
}
}
[Serializable]
public class CheckRegistry : MarshalByRefObject, IWork
{
public void Work()
{
RegistryKey archerKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft", true); //this call throws a security exception
}
}
S'il vous plaît noter, si je charge le code dans une nouvelle appdomain à partir d'une application de la console ou les fenêtres, il fonctionne très bien. Je pense que c'est plus une question de composant logiciel enfichable MMC qu'une question de l'UAC.
Toute idée serait très apprécié ...
Merci,
Brad
La première ligne: WindowsPrincipal user = (WindowsPrincipal) Thread.CurrentPrincipal; Lance une erreur de sécurité: La demande d'autorisation de type 'System.Security.Permissions.SecurityPermission, mscorlib, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' a échoué. – BLogan