Aracılığıyla paylaş


AppDomain.SetAppDomainPolicy(PolicyLevel) Yöntem

Tanım

Dikkat

AppDomain policy levels are obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Dikkat

AppDomain policy levels are obsolete

Bu uygulama etki alanı için güvenlik ilkesi düzeyini oluşturur.

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

Parametreler

domainPolicy
PolicyLevel

Güvenlik ilkesi düzeyi.

Uygulamalar

Öznitelikler

Özel durumlar

domainPolicy, null değeridir.

Güvenlik ilkesi düzeyi zaten ayarlanmıştır.

İşlem, yüklenmemiş bir uygulama etki alanında deneniyor.

Örnekler

Aşağıdaki örnekte, bir uygulama etki alanının güvenlik ilkesi düzeyini ayarlamak için yönteminin nasıl kullanılacağı SetAppDomainPolicy gösterilmektedir.

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);
        }
    }
}
open System
open System.Security
open System.Security.Policy
open System.Security.Permissions

// Create a new application domain.
let domain = AppDomain.CreateDomain "MyDomain"

// Create a new AppDomain PolicyLevel.
let polLevel = PolicyLevel.CreateAppDomainLevel()
// Create a new, empty permission set.
let permSet = PermissionSet PermissionState.None
// Add permission to execute code to the permission set.
permSet.AddPermission(SecurityPermission SecurityPermissionFlag.Execution) |> ignore
// Give the policy level's root code group a new policy statement based
// on the new permission set.
polLevel.RootCodeGroup.PolicyStatement <- 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"
    |> ignore
with :? PolicyException as e ->
    printfn $"PolicyException: {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

Açıklamalar

Güvenlik ilkesinin etkili olması için içine bir derleme yüklenmeden AppDomain önce bu yöntemi çağırın.

Şunlara uygulanır