如何创建具有空证据的 AppDomain?
How do I create an AppDomain with a null evidence?
当您通过 COM 实例化 .NET class 时,evidence of the created AppDomain is null.
我正在尝试分析仅在 AppDomain 证据为空时才会出现的问题,我想创建一个纯粹在 .NET 中的 mcve,即无需注册 class 在 COM 中并从那里调用它。为此,我需要一个没有证据的 AppDomain。
我该怎么做?将null
传给AppDomain.CreateDomain时,重用当前AppDomain的证据
确实,在 .Net 4.0 + 中无法创建具有空证据的 AppDomain。您的代码 运行 是早期版本吗?
AppDomain.Evidence
属性returns内部AppDomain.EvidenceNoDemand
属性和两个getter的反编译源代码如下,
从源代码看来,无论是通过 COM 还是通过托管程序集创建的应用程序域都不可能有空证据。
public Evidence Evidence
{
[SecuritySafeCritical, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries"), SecurityPermission(SecurityAction.Demand, ControlEvidence=true)]
get
{
return this.EvidenceNoDemand;
}
}
internal Evidence EvidenceNoDemand
{
[SecurityCritical]
get
{
if (this._SecurityIdentity != null)
{
return this._SecurityIdentity.Clone();
}
if (!this.IsDefaultAppDomain() && this.nIsDefaultAppDomainForEvidence())
{
return GetDefaultDomain().Evidence;
}
return new Evidence(new AppDomainEvidenceFactory(this));
}
}
当您通过 COM 实例化 .NET class 时,evidence of the created AppDomain is null.
我正在尝试分析仅在 AppDomain 证据为空时才会出现的问题,我想创建一个纯粹在 .NET 中的 mcve,即无需注册 class 在 COM 中并从那里调用它。为此,我需要一个没有证据的 AppDomain。
我该怎么做?将null
传给AppDomain.CreateDomain时,重用当前AppDomain的证据
确实,在 .Net 4.0 + 中无法创建具有空证据的 AppDomain。您的代码 运行 是早期版本吗?
AppDomain.Evidence
属性returns内部AppDomain.EvidenceNoDemand
属性和两个getter的反编译源代码如下,
从源代码看来,无论是通过 COM 还是通过托管程序集创建的应用程序域都不可能有空证据。
public Evidence Evidence
{
[SecuritySafeCritical, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries"), SecurityPermission(SecurityAction.Demand, ControlEvidence=true)]
get
{
return this.EvidenceNoDemand;
}
}
internal Evidence EvidenceNoDemand
{
[SecurityCritical]
get
{
if (this._SecurityIdentity != null)
{
return this._SecurityIdentity.Clone();
}
if (!this.IsDefaultAppDomain() && this.nIsDefaultAppDomainForEvidence())
{
return GetDefaultDomain().Evidence;
}
return new Evidence(new AppDomainEvidenceFactory(this));
}
}