Share via


GacMembershipCondition 클래스

정의

전역 어셈블리 캐시 멤버 자격을 테스트하여 어셈블리가 코드 그룹에 속하는지 여부를 확인합니다. 이 클래스는 상속될 수 없습니다.

public ref class GacMembershipCondition sealed : System::Security::ISecurityEncodable, System::Security::Policy::IMembershipCondition
public ref class GacMembershipCondition sealed
public sealed class GacMembershipCondition : System.Security.ISecurityEncodable, System.Security.Policy.IMembershipCondition
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class GacMembershipCondition
type GacMembershipCondition = class
    interface ISecurityEncodable
    interface ISecurityPolicyEncodable
    interface IMembershipCondition
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type GacMembershipCondition = class
    interface IMembershipCondition
    interface ISecurityEncodable
    interface ISecurityPolicyEncodable
Public NotInheritable Class GacMembershipCondition
Implements IMembershipCondition, ISecurityEncodable
Public NotInheritable Class GacMembershipCondition
상속
GacMembershipCondition
특성
구현

예제

다음 예제에서는 클래스의 사용을 보여 줍니다 GacMembershipCondition .

using namespace System;
using namespace System::Security;
using namespace System::Security::Policy;
using namespace System::Collections;
public ref class GacMembershipConditionDemo
{
private:

    // Demonstrate the Copy method, which creates an identical 
    // copy of the current permission.
    bool CopyDemo()
    {
        Console::WriteLine(
            "************************************************************");
        GacMembershipCondition ^ Gac1 = gcnew GacMembershipCondition;
        Console::WriteLine("Original membership condition = ");
        Console::WriteLine(Gac1->ToXml());
        try
        {
            IMembershipCondition^ membershipCondition = Gac1->Copy();
            Console::WriteLine("Result of Copy = ");
            Console::WriteLine(
                (dynamic_cast<GacMembershipCondition^>(membershipCondition))
                ->ToXml());
        }
        catch (Exception^ e) 
        {
             Console::WriteLine("Copy failed : {0}{1}", Gac1, e);
             return false;
        }

        return true;
    }

    // Demonstrate the Check method, which determines whether the specified 
    // evidence satisfies the membership condition.
    bool CheckDemo()
    {
        Console::WriteLine(
            "************************************************************");
        GacMembershipCondition ^ Gac1 = gcnew GacMembershipCondition;
        GacInstalled ^ myGac = gcnew GacInstalled;
        try
        {
             array<Object^>^hostEvidence = {myGac};
             array<Object^>^assemblyEvidence = {};
             Evidence^ myEvidence = 
                 gcnew Evidence(hostEvidence,assemblyEvidence);
             bool retCode = Gac1->Check(myEvidence);
             Console::WriteLine("Result of Check = {0}\n", retCode);
        }
        catch (Exception^ e) 
        {
             Console::WriteLine("Check failed : {0}{1}", Gac1, e);
             return false;
        }

        return true;
    }

    // Demonstrate the GetHashCode method, which returns a hash code 
    // for the specified membership condition.
    bool GetHashCodeDemo()
    {
        Console::WriteLine(
            "************************************************************");
        GacMembershipCondition ^ Gac1 = gcnew GacMembershipCondition;
        try
        {
            Console::WriteLine(
                "Result of GetHashCode for a GacMembershipCondition = {0}\n",
                Gac1->GetHashCode());
        }
        catch (Exception^ e) 
        {
             Console::WriteLine("GetHashCode failed : {0}{1}", Gac1, e);
             return false;
        }

        return true;
    }

    // Demonstrate the ToXml and FromXml methods, including the overloads. 
    // ToXml creates an XML encoding of the membership condition and its 
    // current state; FromXml reconstructs a membership condition with the 
    // specified state from the XML encoding.
    bool ToFromXmlDemo()
    {
        Console::WriteLine(
            "************************************************************");
        try
        {
            GacMembershipCondition ^ Gac1 = gcnew GacMembershipCondition;
            GacMembershipCondition ^ Gac2 = gcnew GacMembershipCondition;

            // Roundtrip a GacMembershipCondition to and from an XML encoding.
            Gac2->FromXml(Gac1->ToXml());
            bool result = Gac2->Equals(Gac1);
            if (result)
            {
                Console::WriteLine("Result of ToXml() = {0}", Gac2->ToXml());
                Console::WriteLine(
                    "Result of ToFromXml roundtrip = {0}", Gac2);
            }
            else
            {
                Console::WriteLine(Gac2->ToString());
                Console::WriteLine(Gac1->ToString());
                return false;
            }

            GacMembershipCondition ^ Gac3 = gcnew GacMembershipCondition;
            GacMembershipCondition ^ Gac4 = gcnew GacMembershipCondition;
            IEnumerator^ policyEnumerator = SecurityManager::PolicyHierarchy();
            while (policyEnumerator->MoveNext())
            {
                PolicyLevel^ currentLevel = 
                    dynamic_cast<PolicyLevel^>(policyEnumerator->Current);
                if (currentLevel->Label->Equals("Machine"))
                {
                    Console::WriteLine("Result of ToXml(level) = {0}", 
                        Gac3->ToXml(currentLevel));
                    Gac4->FromXml(Gac3->ToXml(), currentLevel);
                    Console::WriteLine(
                        "Result of FromXml(element, level) = {0}", Gac4);
                }
            }
        }
        catch (Exception^ e) 
        {
            Console::WriteLine("ToFromXml failed. {0}", e);
            return false;
        }

        return true;
    }

public:

    // Invoke all demos.
    bool RunDemo()
    {
        bool returnCode = true;
        bool tempReturnCode;

        // Call the Copy demo.
        if (tempReturnCode = CopyDemo())
            Console::WriteLine("Copy demo completed successfully.");
        else
            Console::WriteLine("Copy demo failed.");

        returnCode = tempReturnCode && returnCode;

        // Call the Check demo.
        if (tempReturnCode = CheckDemo())
            Console::WriteLine("Check demo completed successfully.");
        else
            Console::WriteLine("Check demo failed.");

        returnCode = tempReturnCode && returnCode;

        // Call the GetHashCode demo.
        if (tempReturnCode = GetHashCodeDemo())
            Console::WriteLine("GetHashCode demo completed successfully.");
        else
            Console::WriteLine("GetHashCode demo failed.");

        returnCode = tempReturnCode && returnCode;

        // Call the ToFromXml demo. 
        if (tempReturnCode = ToFromXmlDemo())
            Console::WriteLine("ToFromXml demo completed successfully.");
        else
            Console::WriteLine("ToFromXml demo failed.");

        returnCode = tempReturnCode && returnCode;
        return (returnCode);
    }
};

// Test harness.
int main()
{
    try
    {
        GacMembershipConditionDemo^ testcase = 
            gcnew GacMembershipConditionDemo;
        bool returnCode = testcase->RunDemo();
        if (returnCode)
        {
            Console::WriteLine(
                "The GacMembershipCondition demo completed successfully.");
            Console::WriteLine("Press the Enter key to exit.");
            Console::ReadLine();
            System::Environment::ExitCode = 100;
        }
        else
        {
            Console::WriteLine("The GacMembershipCondition demo failed.");
            Console::WriteLine("Press the ENTER key to exit.");
            Console::ReadLine();
            System::Environment::ExitCode = 101;
        }
    }
    catch (Exception^ e) 
    {
        Console::WriteLine("The GacIdentityPermission demo failed.");
        Console::WriteLine(e);
        Console::WriteLine("Press the Enter key to exit.");
        Console::ReadLine();
        System::Environment::ExitCode = 101;
    }
}
using System;
using System.Security; 
using System.Security.Policy; 
using System.Collections;

public class GacMembershipConditionDemo
{
    // Demonstrate the Copy method, which creates an identical
    // copy of the current permission.
    private bool CopyDemo()
    {
        Console.WriteLine(
            "************************************************************");
        GacMembershipCondition Gac1 = new GacMembershipCondition();
        Console.WriteLine("Original membership condition = ");
        Console.WriteLine(Gac1.ToXml().ToString());
        try
        {
            IMembershipCondition membershipCondition = Gac1.Copy();
            Console.WriteLine("Result of Copy = ");
            Console.WriteLine(
                ((GacMembershipCondition)membershipCondition).ToXml().ToString()
                );
        }
        catch (Exception e)
        {
            Console.WriteLine("Copy failed : " + Gac1.ToString() + e);
            return false;
        }

        return true;
    }
    // Demonstrate the Check method, which determines whether the specified 
    // evidence satisfies the membership condition.
    private bool CheckDemo()
    {
        Console.WriteLine(
            "************************************************************");
        GacMembershipCondition Gac1 = new GacMembershipCondition();
        GacInstalled myGac = new GacInstalled();
        try
        {
            Object [] hostEvidence = {myGac};
            Object [] assemblyEvidence = {};

            Evidence myEvidence = new Evidence(hostEvidence,assemblyEvidence);
            bool retCode = Gac1.Check(myEvidence);
            Console.WriteLine("Result of Check = " + retCode.ToString() + "\n");
        }
        catch (Exception e)
        {
            Console.WriteLine("Check failed : " + Gac1.ToString() + e);
            return false;
        }

        return true;
    }

    // Demonstrate the GetHashCode method, which returns a hash code
    // for the specified membership condition.
    private bool GetHashCodeDemo()
    {
        Console.WriteLine(
            "************************************************************");
        GacMembershipCondition Gac1 = new GacMembershipCondition();
        try
        {
            Console.WriteLine(
                "Result of GetHashCode for a GacMembershipCondition = " + 
                Gac1.GetHashCode().ToString() + "\n");
        }
        catch (Exception e)
        {
            Console.WriteLine("GetHashCode failed : " + Gac1.ToString() + e);
            return false;
        }

        return true;
    }

    // Demonstrate the ToXml and FromXml methods, including the overloads.
    // ToXml creates an XML encoding of the membership condition and its 
    // current state; FromXml reconstructs a membership condition with the 
    // specified state from the XML encoding.
    private bool ToFromXmlDemo()
    {
        Console.WriteLine(
            "************************************************************");
        try
        {
            GacMembershipCondition Gac1 = new GacMembershipCondition();
            GacMembershipCondition Gac2 = new GacMembershipCondition();

            // Roundtrip a GacMembershipCondition to and from an XML encoding.
            Gac2.FromXml(Gac1.ToXml());
            bool result = Gac2.Equals(Gac1);
            if (result)
            {
                Console.WriteLine(
                    "Result of ToXml() = " + Gac2.ToXml().ToString());
                Console.WriteLine(
                    "Result of ToFromXml roundtrip = " + Gac2.ToString());
            }
            else
            {
                Console.WriteLine(Gac2.ToString());
                Console.WriteLine(Gac1.ToString());
                return false;
            }

            GacMembershipCondition Gac3 = new GacMembershipCondition();
            GacMembershipCondition Gac4 = new GacMembershipCondition();
            IEnumerator policyEnumerator = SecurityManager.PolicyHierarchy();
            while (policyEnumerator.MoveNext())
            {
                PolicyLevel currentLevel = 
                    (PolicyLevel)policyEnumerator.Current;
                if (currentLevel.Label == "Machine")
                {
                    Console.WriteLine("Result of ToXml(level) = " + 
                        Gac3.ToXml(currentLevel));
                    Gac4.FromXml(Gac3.ToXml(), currentLevel);
                    Console.WriteLine("Result of FromXml(element, level) = " + 
                        Gac4.ToString());
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("ToFromXml failed. " + e);
            return false;
        }

        return true;
    }

    // Invoke all demos.
    public bool RunDemo()
    {

        bool returnCode =true;
        bool tempReturnCode;

        // Call the Copy demo.
        if (tempReturnCode = CopyDemo())
            Console.Out.WriteLine("Copy demo completed successfully.");
        else 
            Console.Out.WriteLine("Copy demo failed.");

        returnCode = tempReturnCode && returnCode;

        // Call the Check demo.
        if (tempReturnCode = CheckDemo())
            Console.Out.WriteLine("Check demo completed successfully.");
        else 
            Console.Out.WriteLine("Check demo failed.");

        returnCode = tempReturnCode && returnCode;

        // Call the GetHashCode demo.
        if (tempReturnCode = GetHashCodeDemo())
            Console.Out.WriteLine("GetHashCode demo completed successfully.");
        else 
            Console.Out.WriteLine("GetHashCode demo failed.");

        returnCode = tempReturnCode && returnCode;

        // Call the ToFromXml demo.	
        if (tempReturnCode = ToFromXmlDemo())
            Console.Out.WriteLine("ToFromXml demo completed successfully.");
        else 
            Console.Out.WriteLine("ToFromXml demo failed.");

        returnCode = tempReturnCode && returnCode;
        return (returnCode);	
    }

    // Test harness.
    public static void Main(String[] args)
    {
        try
        {
            GacMembershipConditionDemo testcase = 
                new GacMembershipConditionDemo();
            bool returnCode = testcase.RunDemo();
            if (returnCode)
            {
                Console.Out.WriteLine(
                    "The GacMembershipCondition demo completed successfully.");
                Console.Out.WriteLine("Press the Enter key to exit.");
                string consoleInput = Console.ReadLine();
                System.Environment.ExitCode = 100;
            }
            else
            {
                Console.Out.WriteLine("The GacMembershipCondition demo failed.");
                Console.Out.WriteLine("Press the ENTER key to exit.");
                string consoleInput = Console.ReadLine();
                System.Environment.ExitCode = 101;
            }
        }
        catch (Exception e)
        {
            Console.Out.WriteLine("The GacIdentityPermission demo failed.");
            Console.WriteLine(e.ToString());
            Console.Out.WriteLine("Press the Enter key to exit.");
            string consoleInput = Console.ReadLine();
            System.Environment.ExitCode = 101;
        }
    }
}
Imports System.Security
Imports System.Security.Policy
Imports System.Collections

Public Class GacMembershipConditionDemo

    ' Demonstrate the Copy method, which creates an identical 
    ' copy of the current permission.
    Private Function CopyDemo() As Boolean
        Console.WriteLine( _
            "*************************************************************")
        Dim Gac1 As New GacMembershipCondition
        Console.WriteLine("Original membership condition = ")
        Console.WriteLine(Gac1.ToXml().ToString())
        Try
            Dim membershipCondition As IMembershipCondition = Gac1.Copy()
            Console.WriteLine("Result of Copy = ")
            Console.WriteLine(CType(membershipCondition, _
                GacMembershipCondition).ToXml().ToString())
        Catch e As Exception
            Console.WriteLine(("Copy failed : " & Gac1.ToString() & _
                e.ToString()))
            Return False
        End Try

        Return True
    End Function 'CopyDemo

    ' Demonstrate the Check method, which determines whether the specified 
    ' evidence satisfies the membership condition.
    Private Function CheckDemo() As Boolean
        Console.WriteLine( _
            "*************************************************************")
        Dim Gac1 As New GacMembershipCondition
        Dim myGac As New GacInstalled
        Try
            Dim hostEvidence() As Object = {myGac}
            Dim assemblyEvidence() As Object

            Dim myEvidence As New Evidence(hostEvidence, assemblyEvidence)
            Dim retCode As Boolean = Gac1.Check(myEvidence)
            Console.WriteLine(("Result of Check = " & retCode.ToString() _
                & ControlChars.Lf))
        Catch e As Exception
            Console.WriteLine(("Check failed : " & Gac1.ToString() & _ 
                e.ToString()))
            Return False
        End Try
        Return True
    End Function 'CheckDemo

    ' Demonstrate the GetHashCode method, which returns a hash code
    ' for the specified membership condition.
    Private Function GetHashCodeDemo() As Boolean
        Console.WriteLine( _
            "*************************************************************")
        Dim Gac1 As New GacMembershipCondition
        Try
            Console.WriteLine( _
                ("Result of GetHashCode for a GacMembershipCondition = " _
                & Gac1.GetHashCode().ToString() & ControlChars.Lf))
        Catch e As Exception
            Console.WriteLine(("GetHashCode failed : " & _
                Gac1.ToString() & e.ToString()))
            Return False
        End Try

        Return True
    End Function 'GetHashCodeDemo

    'Demonstrate the ToXml and FromXml methods, including the overloads. 
    ' ToXml creates an XML encoding of the membership condition and its 
    ' current state; FromXml reconstructs a membership condition with the 
    ' specified state from the XML encoding.
    Private Function ToFromXmlDemo() As Boolean
        Console.WriteLine( _
            "*************************************************************")
        Try
            Dim Gac1 As New GacMembershipCondition
            Dim Gac2 As New GacMembershipCondition

            ' Roundtrip a GacMembershipCondition to and from an XML encoding.
            Gac2.FromXml(Gac1.ToXml())
            Dim result As Boolean = Gac2.Equals(Gac1)
            If result Then
                Console.WriteLine(("Result of ToXml() = " & _ 
                    Gac2.ToXml().ToString()))
                Console.WriteLine(("Result of ToFromXml roundtrip = " & _ 
                    Gac2.ToString()))
            Else
                Console.WriteLine(Gac2.ToString())
                Console.WriteLine(Gac1.ToString())
                Return False
            End If

            Dim Gac3 As New GacMembershipCondition
            Dim Gac4 As New GacMembershipCondition
            Dim policyEnumerator As IEnumerator = _
                SecurityManager.PolicyHierarchy()
            While policyEnumerator.MoveNext()
                Dim currentLevel As PolicyLevel = _
                    CType(policyEnumerator.Current, PolicyLevel)
                If currentLevel.Label = "Machine" Then
                    Console.WriteLine(("Result of ToXml(level) = " & _
                        Gac3.ToXml(currentLevel).ToString()))
                    Gac4.FromXml(Gac3.ToXml(), currentLevel)
                    Console.WriteLine(("Result of FromXml(element, level) = " _
                        & Gac4.ToString()))
                End If
            End While
        Catch e As Exception
            Console.WriteLine(("ToFromXml failed. " & e.ToString()))
            Return False
        End Try

        Return True
    End Function 'ToFromXmlDemo

    ' Invoke all demos.
    Public Function RunDemo() As Boolean

        Dim returnCode As Boolean = True
        Dim tempReturnCode As Boolean

        ' Call the Copy demo.
        tempReturnCode = CopyDemo()
        If tempReturnCode = True Then
            Console.Out.WriteLine("Copy demo completed successfully.")
        Else
            Console.Out.WriteLine("Copy demo failed.")
        End If

        returnCode = tempReturnCode AndAlso returnCode

        ' Call the Check demo.
        tempReturnCode = CheckDemo()
        If tempReturnCode = True Then
            Console.Out.WriteLine("Check demo completed successfully.")
        Else
            Console.Out.WriteLine("Check demo failed.")
        End If

        returnCode = tempReturnCode AndAlso returnCode

        ' Call the GetHashCode demo.
        tempReturnCode = GetHashCodeDemo()
        If tempReturnCode = True Then
            Console.Out.WriteLine("GetHashCode demo completed successfully.")
        Else
            Console.Out.WriteLine("GetHashCode demo failed.")
        End If

        returnCode = tempReturnCode AndAlso returnCode

        ' Call the ToFromXml demo.
        tempReturnCode = ToFromXmlDemo()
        If tempReturnCode = True Then
            Console.Out.WriteLine("ToFromXml demo completed successfully.")
        Else
            Console.Out.WriteLine("ToFromXml demo failed.")
        End If

        returnCode = tempReturnCode AndAlso returnCode
        Return returnCode
    End Function 'RunDemo

    ' Test harness.
    Public Overloads Shared Sub Main(ByVal args() As [String])
        Try
            Dim testcase As New GacMembershipConditionDemo
            Dim returnCode As Boolean = testcase.RunDemo()
            If returnCode Then
                Console.Out.WriteLine( _
                    "The GacMembershipCondition demo completed successfully.")
                Console.Out.WriteLine("Press the Enter key to exit.")
                Dim consoleInput As String = Console.ReadLine()
                System.Environment.ExitCode = 100
            Else
                Console.Out.WriteLine("The GacMembershipCondition demo failed.")
                Console.Out.WriteLine("Press the ENTER key to exit.")
                Dim consoleInput As String = Console.ReadLine()
                System.Environment.ExitCode = 101
            End If
        Catch e As Exception
            Console.Out.WriteLine("The GacIdentityPermission demo failed.")
            Console.WriteLine(e.ToString())
            Console.Out.WriteLine("Press the Enter key to exit.")
            Dim consoleInput As String = Console.ReadLine()
            System.Environment.ExitCode = 101
        End Try
    End Sub
End Class

설명

전역 어셈블리 캐시에 설치된 모든 어셈블리에는 사용 권한 집합이 FullTrust 부여됩니다.

생성자

GacMembershipCondition()

GacMembershipCondition 클래스의 새 인스턴스를 초기화합니다.

메서드

Check(Evidence)

지정된 증명 정보가 멤버 자격 조건에 맞는지 여부를 나타냅니다.

Copy()

멤버 자격 조건의 동일한 복사본을 만듭니다.

Equals(Object)

현재 개체가 지정된 개체와 같은지 여부를 나타냅니다.

FromXml(SecurityElement)

지정된 XML 인코딩을 사용하여 보안 개체를 다시 생성합니다.

FromXml(SecurityElement, PolicyLevel)

지정된 XML 인코딩을 사용하여 지정된 정책 수준 컨텍스트로 보안 개체를 다시 생성합니다.

GetHashCode()

현재 멤버 자격 조건에 대한 해시 코드를 가져옵니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

멤버 자격 조건의 문자열 표현을 반환합니다.

ToXml()

보안 개체 및 현재 상태의 XML 인코딩을 만듭니다.

ToXml(PolicyLevel)

지정된 정책 수준 컨텍스트를 사용하여 보안 개체 및 해당 보안 개체의 현재 상태에 대한 XML 인코딩을 만듭니다.

적용 대상