1
我已经创建了MMC管理单元,该管理单元在新的AppDomain中启动代码,并且部分代码检查注册表项。如果我在快速入门过程中检查密钥,它会起作用,但新AppDomain中的代码会引发安全异常。如果我从控制台或Windows应用程序加载新的appdomain中的代码,它工作正常。从MMC管理单元中的新AppDomain不会获得UAC的提升权限
下面是代码:
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
}
}
请注意,如果我从一个控制台或Windows应用程序新的AppDomain中加载代码,它工作正常。我认为这是一个比UAC问题更多的MMC管理单元问题。
任何有识之士将不胜感激......
感谢,
布拉德
第一行: WindowsPrincipal用户=(WindowsPrincipal)Thread.CurrentPrincipal中; 引发安全错误: 请求类型为“System.Security.Permissions.SecurityPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的权限失败。 – BLogan