protected static ObjectHandle CreateInstanceHelper (AppDomainSetup adSetup) {
if (adSetup.ActivationArguments == null)
throw new ArgumentException(Environment.GetResourceString("Arg_MissingActivationArguments"));
adSetup.ActivationArguments.ActivateInstance = true;
// inherit the caller's domain evidence for the activation.
Evidence activatorEvidence = AppDomain.CurrentDomain.Evidence;
// add the application identity as an evidence.
Evidence appEvidence = CmsUtils.MergeApplicationEvidence(null,
adSetup.ActivationArguments.ApplicationIdentity,
adSetup.ActivationArguments.ActivationContext,
adSetup.ActivationArguments.ActivationData);
HostSecurityManager securityManager = AppDomain.CurrentDomain.HostSecurityManager;
ApplicationTrust appTrust = securityManager.DetermineApplicationTrust(appEvidence, activatorEvidence, new TrustManagerContext());
if (appTrust == null || !appTrust.IsApplicationTrustedToRun)
throw new PolicyException(Environment.GetResourceString("Policy_NoExecutionPermission"),
System.__HResults.CORSEC_E_NO_EXEC_PERM,
null);
ObjRef or = AppDomain.nCreateInstance(adSetup.ActivationArguments.ApplicationIdentity.FullName,
adSetup,
appEvidence,
appEvidence == null ? AppDomain.CurrentDomain.InternalEvidence : null,
AppDomain.CurrentDomain.GetSecurityDescriptor());
if (or == null)
return null;
return RemotingServices.Unmarshal(or) as ObjectHandle;
}
}