AppDomain.SetAppDomainPolicy(PolicyLevel) 메서드

정의

경고

이 API는 현재 사용되지 않습니다.

이 애플리케이션 도메인의 보안 정책 수준을 설정합니다.Establishes the security policy level for this application domain.

public:
 void SetAppDomainPolicy(System::Security::Policy::PolicyLevel ^ domainPolicy);
[System.Obsolete("AppDomain policy levels are obsolete")]
[System.Obsolete("AppDomain policy levels are obsolete and will be removed in a future release of the .NET Framework. See https://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
[System.Security.SecurityCritical]
public void SetAppDomainPolicy (System.Security.Policy.PolicyLevel domainPolicy);
member this.SetAppDomainPolicy : System.Security.Policy.PolicyLevel -> unit
Public Sub SetAppDomainPolicy (domainPolicy As PolicyLevel)

매개 변수

domainPolicy
PolicyLevel

보안 정책 수준입니다.The security policy level.

특성

예외

domainPolicynull인 경우domainPolicy is null.

보안 정책 수준이 이미 설정되어 있는 경우The security policy level has already been set.

언로드된 애플리케이션 도메인에서 작업이 시도됩니다.The operation is attempted on an unloaded application domain.

예제

다음 예제에서는 사용 하는 방법에 설명 합니다 SetAppDomainPolicy 애플리케이션 도메인의 보안 정책 수준을 설정 하는 방법입니다.The following example demonstrates how to use the SetAppDomainPolicy method to set the security policy level of an application domain.

using namespace System;
using namespace System::Threading;
using namespace System::Security;
using namespace System::Security::Policy;
using namespace System::Security::Permissions;
int main()
{
   
   // Create a new application domain.
   AppDomain^ domain = System::AppDomain::CreateDomain( "MyDomain" );
   
   // Create a new AppDomain PolicyLevel.
   PolicyLevel^ polLevel = PolicyLevel::CreateAppDomainLevel();
   
   // Create a new, empty permission set.
   PermissionSet^ permSet = gcnew PermissionSet( PermissionState::None );
   
   // Add permission to execute code to the permission set.
   permSet->AddPermission( gcnew SecurityPermission( SecurityPermissionFlag::Execution ) );
   
   // Give the policy level's root code group a new policy statement based
   // on the new permission set.
   polLevel->RootCodeGroup->PolicyStatement = gcnew PolicyStatement( permSet );
   
   // Give the new policy level to the application domain.
   domain->SetAppDomainPolicy( polLevel );
   
   // Try to execute the assembly.
   try
   {
      
      // This will throw a PolicyException if the executable tries to
      // access any resources like file I/O or tries to create a window.
      domain->ExecuteAssembly( "Assemblies\\MyWindowsExe.exe" );
   }
   catch ( PolicyException^ e ) 
   {
      Console::WriteLine( "PolicyException: {0}", e->Message );
   }

   AppDomain::Unload( domain );
}

using System;
using System.Threading;
using System.Security;
using System.Security.Policy;
using System.Security.Permissions;

namespace AppDomainSnippets
{
    class ADSetAppDomainPolicy
    {
        static void Main(string[] args)
        {
            // Create a new application domain.
            AppDomain domain = System.AppDomain.CreateDomain("MyDomain");
            
            // Create a new AppDomain PolicyLevel.
            PolicyLevel polLevel = PolicyLevel.CreateAppDomainLevel();
            // Create a new, empty permission set.
            PermissionSet permSet = new PermissionSet(PermissionState.None);
            // Add permission to execute code to the permission set.
            permSet.AddPermission
                (new SecurityPermission(SecurityPermissionFlag.Execution));
            // Give the policy level's root code group a new policy statement based
            // on the new permission set.
            polLevel.RootCodeGroup.PolicyStatement = new PolicyStatement(permSet);
            // Give the new policy level to the application domain.
            domain.SetAppDomainPolicy(polLevel);
            
            // Try to execute the assembly.
            try
            {
                // This will throw a PolicyException if the executable tries to
                // access any resources like file I/O or tries to create a window.
                domain.ExecuteAssembly("Assemblies\\MyWindowsExe.exe");
            }
            catch(PolicyException e)
            {
                Console.WriteLine("PolicyException: {0}", e.Message);
            }

            AppDomain.Unload(domain);
        }
    }
}
Imports System.Threading
Imports System.Security
Imports System.Security.Policy
Imports System.Security.Permissions



Class ADSetAppDomainPolicy
   
   Overloads Shared Sub Main(args() As String)
      ' Create a new application domain.
      Dim domain As AppDomain = System.AppDomain.CreateDomain("MyDomain")
      
      ' Create a new AppDomain PolicyLevel.
      Dim polLevel As PolicyLevel = PolicyLevel.CreateAppDomainLevel()
      ' Create a new, empty permission set.
      Dim permSet As New PermissionSet(PermissionState.None)
      ' Add permission to execute code to the permission set.
      permSet.AddPermission(New SecurityPermission(SecurityPermissionFlag.Execution))
      ' Give the policy level's root code group a new policy statement based
      ' on the new permission set.
      polLevel.RootCodeGroup.PolicyStatement = New PolicyStatement(permSet)
      ' Give the new policy level to the application domain.
      domain.SetAppDomainPolicy(polLevel)
      
      ' Try to execute the assembly.
      Try
         ' This will throw a PolicyException if the executable tries to
         ' access any resources like file I/Q or window creation.
         domain.ExecuteAssembly("Assemblies\MyWindowsExe.exe")
      Catch e As PolicyException
         Console.WriteLine("PolicyException: {0}", e.Message)
      End Try
      
      AppDomain.Unload(domain)
   End Sub
End Class

설명

보안 정책을 적용 하기 위해 어셈블리가 AppDomain 로드 되기 전에이 메서드를 호출 합니다.Call this method before an assembly is loaded into the AppDomain in order for the security policy to have effect.

보안

SecurityCriticalAttribute
직접 실행 호출자에 대 한 완전 신뢰가 필요 합니다.requires full trust for the immediate caller. 이 멤버는 부분적으로 신뢰할 수 있는 또는 투명 코드에서 사용할 수 없습니다.This member cannot be used by partially trusted or transparent code.

적용 대상