Я создал оснастку MMC, которая запускает код в новом домене приложения, и часть кода проверяет наличие ключа реестра. Если я проверяю ключ в процессе привязки, он работает, но код в новом домене приложения выдает исключение безопасности. Если я загружаю код в новый домен приложения из приложения консоли или Windows, он работает нормально.
Вот код:
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, он работает нормально. Я думаю, что это больше вопрос оснастки MMC, чем вопрос UAC.
Любое понимание будет высоко ценится ...
Спасибо,
Бред