IApplicationTrustManager 接口

定义

确定是否应执行应用程序以及应授予它哪个权限集。Determines whether an application should be executed and which set of permissions should be granted to it.

public interface class IApplicationTrustManager : System::Security::ISecurityEncodable
[System.Runtime.InteropServices.ComVisible(true)]
public interface IApplicationTrustManager : System.Security.ISecurityEncodable
[<System.Runtime.InteropServices.ComVisible(true)>]
type IApplicationTrustManager = interface
    interface ISecurityEncodable
Public Interface IApplicationTrustManager
Implements ISecurityEncodable
属性
实现

示例

下面的示例演示的简单实现 IApplicationTrustManagerThe following example shows a simple implementation of IApplicationTrustManager.

// To use the custom trust manager MyTrustManager, compile it into CustomTrustManager.dll, 
// place that assembly in the GAC, and  put the following elements in
// an ApplicationTrust.config file in the config folder in the Microsoft .NET framework
// installation folder.

//<?xml version="1.0" encoding="utf-8" ?>
//                    <ApplicationEntries />
//                    <IApplicationTrustManager class="MyNamespace.MyTrustManager, CustomTrustManager, Version=1.0.0.3, Culture=neutral, PublicKeyToken=5659fc598c2a503e"/>

using System;
using System.Security;
using System.Security.Policy;
using System.Windows.Forms;
namespace MyNamespace
{
    public class MyTrustManager : IApplicationTrustManager
    {
        public ApplicationTrust DetermineApplicationTrust(ActivationContext appContext, TrustManagerContext context)
        {
            ApplicationTrust trust = new ApplicationTrust(appContext.Identity);
            trust.IsApplicationTrustedToRun = false;

            ApplicationSecurityInfo asi = new ApplicationSecurityInfo(appContext);
            trust.DefaultGrantSet = new PolicyStatement(asi.DefaultRequestSet, PolicyStatementAttribute.Nothing);
            if (context.UIContext == TrustManagerUIContext.Run)
            {
                string message = "Do you want to run " + asi.ApplicationId.Name + " ?";
                string caption = "MyTrustManager";
                MessageBoxButtons buttons = MessageBoxButtons.YesNo;
                DialogResult result;

                // Displays the MessageBox.

                result = MessageBox.Show(message, caption, buttons);

                if (result == DialogResult.Yes)
                {
                    trust.IsApplicationTrustedToRun = true;
                    if (context != null)
                        trust.Persist = context.Persist;
                    else
                        trust.Persist = false;
                }
            }

            return trust;
        }

        public SecurityElement ToXml()
        {
            SecurityElement se = new SecurityElement("IApplicationTrustManager");
            se.AddAttribute("class", typeof(MyTrustManager).AssemblyQualifiedName);
            return se;
        }

        public void FromXml(SecurityElement se)
        {
            if (se.Tag != "IApplicationTrustManager" || (string)se.Attributes["class"] != typeof(MyTrustManager).AssemblyQualifiedName)
                throw new ArgumentException("Invalid tag");
        }
    }
}
' To use the custom trust manager MyTrustManager, compile it into CustomTrustManager.dll, 
' place that assembly in the GAC, and  put the following elements in
' an ApplicationTrust.config file in the config folder in the Microsoft .NET framework
' installation folder.
'<?xml version="1.0" encoding="utf-8" ?>
'                    <ApplicationEntries />
'                    <IApplicationTrustManager class="MyNamespace.MyTrustManager, CustomTrustManager, Version=1.0.0.3, Culture=neutral, PublicKeyToken=5659fc598c2a503e"/>
Imports System.Security
Imports System.Security.Policy
Imports System.Windows.Forms


Public Class MyTrustManager
    Implements IApplicationTrustManager
    
    Public Function DetermineApplicationTrust(ByVal appContext As ActivationContext, ByVal context As TrustManagerContext) As ApplicationTrust Implements IApplicationTrustManager.DetermineApplicationTrust
        Dim trust As New ApplicationTrust(appContext.Identity)
        trust.IsApplicationTrustedToRun = False

        Dim asi As New ApplicationSecurityInfo(appContext)
        trust.DefaultGrantSet = New PolicyStatement(asi.DefaultRequestSet, _
        PolicyStatementAttribute.Nothing)
        If context.UIContext = TrustManagerUIContext.Run Then
            Dim message As String = "Do you want to run " + asi.ApplicationId.Name + " ?"
            Dim caption As String = "MyTrustManager"
            Dim buttons As MessageBoxButtons = MessageBoxButtons.YesNo
            Dim result As DialogResult

            ' Displays the MessageBox.
            result = MessageBox.Show(message, caption, buttons)

            If result = DialogResult.Yes Then
                trust.IsApplicationTrustedToRun = True
                If Not (context Is Nothing) Then
                    trust.Persist = context.Persist
                Else
                    trust.Persist = False
                End If
            End If
        End If
        Return trust

    End Function 'DetermineApplicationTrust
    
    Public Function ToXml() As SecurityElement Implements IApplicationTrustManager.ToXml
        Dim se As New SecurityElement("IApplicationTrustManager")
        se.AddAttribute("class", GetType(MyTrustManager).AssemblyQualifiedName)
        Return se

    End Function 'ToXml
    
    Public Sub FromXml(ByVal se As SecurityElement) Implements IApplicationTrustManager.FromXml
        If se.Tag <> "IApplicationTrustManager" OrElse _
        CStr(se.Attributes("class")) <> GetType(MyTrustManager).AssemblyQualifiedName Then
            Throw New ArgumentException("Invalid tag")
        End If

    End Sub
End Class

注解

信任管理器必须实现 IApplicationTrustManager 接口。Trust managers must implement the IApplicationTrustManager interface. 宿主调用 IApplicationTrustManager.DetermineApplicationTrust 方法来确定是否应执行应用程序以及应向应用程序授予哪些权限。The host calls the IApplicationTrustManager.DetermineApplicationTrust method to determine whether an application should be executed and which permissions should be granted to the application.

在 .NET Framework 4 及更高版本中,只有一个信任关系管理器,它可以是接口的自定义实现 IApplicationTrustManagerIn the .NET Framework 4 and later, there is only one trust manager, which can be a custom implementation of the IApplicationTrustManager interface. 默认信任关系管理器实现提示用户提供安装应用程序的权限,并提升授予应用程序的权限。The default trust manager implementation prompts the user for permission to install the application and to elevate the permissions granted to the application. 其他信任关系管理器实现可能会提供不同的用户体验。Other trust manager implementations might provide different user experiences. 例如,实现可能会检查受信任的应用程序的企业列表,而不是提示用户输入该信息。For example, an implementation might check an enterprise list for trusted applications instead of prompting the user for that information.

方法

DetermineApplicationTrust(ActivationContext, TrustManagerContext)

确定是否应执行应用程序以及应授予它哪个权限集。Determines whether an application should be executed and which set of permissions should be granted to it.

FromXml(SecurityElement)

通过 XML 编码重新构造具有指定状态的安全对象。Reconstructs a security object with a specified state from an XML encoding.

(继承自 ISecurityEncodable)
ToXml()

创建安全对象及其当前状态的 XML 编码。Creates an XML encoding of the security object and its current state.

(继承自 ISecurityEncodable)

适用于