HostProtectionAttribute 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
주의
Code Access Security is not supported or honored by the runtime.
선언적 보안 동작의 사용을 허용하여 호스트 보호 요구 사항을 확인합니다. 이 클래스는 상속될 수 없습니다.
public ref class HostProtectionAttribute sealed : System::Security::Permissions::CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class HostProtectionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class HostProtectionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
public sealed class HostProtectionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type HostProtectionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type HostProtectionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
type HostProtectionAttribute = class
inherit CodeAccessSecurityAttribute
Public NotInheritable Class HostProtectionAttribute
Inherits CodeAccessSecurityAttribute
- 상속
- 특성
예제
다음 코드 예제에서는 다양한 HostProtectionResource 값으로 HostProtectionAttribute 특성을 사용하는 것을 보여 줍니다.
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Security;
using namespace System::Security::Policy;
using namespace System::Security::Principal;
using namespace System::Security::Permissions;
using namespace System::Diagnostics;
using namespace System::ComponentModel;
using namespace System::Windows::Forms;
using namespace System::Security::Permissions;
// The following class is an example of code that exposes external process management.
// Add the LicenseProviderAttribute to the control.
[LicenseProvider(LicFileLicenseProvider::typeid)]
public ref class MyControl: public System::Windows::Forms::Control
{
private:
// Create a new, null license.
License^ license;
public:
[HostProtection(ExternalProcessMgmt=true)]
MyControl()
{
license = nullptr;
// Determine if a valid license can be granted.
bool isValid = LicenseManager::IsValid( MyControl::typeid );
Console::WriteLine( "The result of the IsValid method call is {0}", isValid );
}
};
// If this application is run on a server that implements host protection, the HostProtection attribute
// is applied. If the application is run on a server that is not host-protected, the attribute
// evaporates; it is not detected and therefore not applied. HostProtection can be configured with
// members of the HostProtectionResource enumeration to customize the protection offered.
// The primary intent of this sample is to show situations in which the HostProtection attribute
// might be meaningfully used. The environment required to demonstrate a particular HostProtection is
// too complex to invoke within the scope of this sample.
public ref class HostProtectionExample
{
public:
static int Success = 100;
private:
// Use the enumeration flags to indicate that this method exposes shared state and
// self-affecting process management.
// Either of the following attribute statements can be used to set the
// resource flags.
// Exit the sample when an exception is thrown.
[HostProtection(SharedState=true,SelfAffectingProcessMgmt=true)]
[HostProtection(Resources=HostProtectionResource::SharedState|
HostProtectionResource::SelfAffectingProcessMgmt)]
static void Exit( String^ Message, int Code )
{
Console::WriteLine( "\nFAILED: {0} {1}", Message, Code );
Environment::ExitCode = Code;
Environment::Exit( Code );
}
// Use the enumeration flags to indicate that this method exposes shared state,
// self-affecting process management, and self-affecting threading.
// This method allows the user to quit the sample.
[HostProtection(SharedState=true,SelfAffectingProcessMgmt=true,
SelfAffectingThreading=true,UI=true)]
static void ExecuteBreak()
{
Console::WriteLine( "Executing Debugger.Break." );
Debugger::Break();
Debugger::Log( 1, "info", "test message" );
}
// Use the enumeration flags to indicate that this method exposes shared state,
// self-affecting threading and the security infrastructure.
// ApplyIdentity sets the current identity.
[HostProtection(SharedState=true,SelfAffectingThreading=true,
SecurityInfrastructure=true)]
static int ApplyIdentity()
{
array<String^>^roles = {"User"};
try
{
AppDomain^ mAD = AppDomain::CurrentDomain;
GenericPrincipal^ mGenPr = gcnew GenericPrincipal( WindowsIdentity::GetCurrent(),roles );
mAD->SetPrincipalPolicy( PrincipalPolicy::WindowsPrincipal );
mAD->SetThreadPrincipal( mGenPr );
return Success;
}
catch ( Exception^ e )
{
Exit( e->ToString(), 5 );
}
return 0;
}
public:
// The following method is started on a separate thread.
[PermissionSet(SecurityAction::Demand, Name="FullTrust")]
static void WatchFileEvents()
{
try
{
Console::WriteLine( "In the child thread." );
FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
watcher->Path = "C:\\Temp";
// Watch for changes in LastAccess and LastWrite times, and
// name changes to files or directories.
watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess | NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);
// Watch only text files.
watcher->Filter = "*.txt";
// Add event handlers.
watcher->Changed += gcnew FileSystemEventHandler( OnChanged );
watcher->Created += gcnew FileSystemEventHandler( OnChanged );
watcher->Deleted += gcnew FileSystemEventHandler( OnChanged );
// Begin watching.
watcher->EnableRaisingEvents = true;
// Wait for the user to quit the program.
Console::WriteLine( "Event handlers have been enabled." );
while ( Console::Read() != 'q' )
;
}
catch ( Exception^ e )
{
Console::WriteLine( e->Message );
}
}
private:
// Use the enumeration flags to indicate that this method exposes synchronization
// and external threading.
[HostProtection(Synchronization=true,ExternalThreading=true)]
static void StartThread()
{
Thread^ t = gcnew Thread( gcnew ThreadStart( WatchFileEvents ) );
// Start the new thread. On a uniprocessor, the thread is not given
// any processor time until the main thread yields the processor.
t->Start();
// Give the new thread a chance to execute.
Thread::Sleep( 1000 );
}
public:
// Call methods that show the use of the HostProtectionResource enumeration.
[HostProtection(Resources=HostProtectionResource::All)]
static int Main()
{
try
{
// Show use of the HostProtectionResource.SharedState,
// HostProtectionResource.SelfAffectingThreading, and
// HostProtectionResource.Security enumeration values.
ApplyIdentity();
Directory::CreateDirectory( "C:\\Temp" );
// Show use of the HostProtectionResource.Synchronization and
// HostProtectionResource.ExternalThreading enumeration values.
StartThread();
Console::WriteLine( "In the main thread." );
Console::WriteLine( "Deleting and creating 'MyTestFile.txt'." );
if ( File::Exists( "C:\\Temp\\MyTestFile.txt" ) )
{
File::Delete( "C:\\Temp\\MyTestFile.txt" );
}
StreamWriter^ sr = File::CreateText( "C:\\Temp\\MyTestFile.txt" );
sr->WriteLine( "This is my file." );
sr->Close();
Thread::Sleep( 1000 );
// Show use of the HostProtectionResource.SharedState,
// HostProtectionResource.SelfProcessMgmt,
// HostProtectionResource.SelfAffectingThreading, and
// HostProtectionResource.UI enumeration values.
ExecuteBreak();
// Show the use of the HostProtectionResource.ExternalProcessManagement enumeration value.
MyControl^ myControl = gcnew MyControl;
Console::WriteLine( "Enter 'q' to quit the sample." );
return 100;
}
catch ( Exception^ e )
{
Exit( e->ToString(), 0 );
return 0;
}
}
// Define the event handlers.
private:
static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
{
// Specify whether a file is changed, created, or deleted.
Console::WriteLine( "In the OnChanged event handler." );
Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
}
};
int main()
{
return HostProtectionExample::Main();
}
using System;
using System.IO;
using System.Threading;
using System.Security;
using System.Security.Policy;
using System.Security.Principal;
using System.Security.Permissions;
using System.Diagnostics;
using System.ComponentModel;
using System.Windows.Forms;
// If this application is run on a server that implements host protection, the
// HostProtectionAttribute attribute is applied. If the application is run on
// a server that is not host-protected, the attribute evaporates; it is not
// detected and therefore not applied. Host protection can be configured with
// members of the HostProtectionResource enumeration to customize the
// protection offered.
// The primary intent of this sample is to show situations in which the
// HostProtectionAttribute attribute might be meaningfully used. The
// environment required to demonstrate a particular behavior is
// too complex to invoke within the scope of this sample.
class HostProtectionExample
{
public static int Success = 100;
// Use the enumeration flags to indicate that this method exposes
// shared state and self-affecting process management.
// Either of the following attribute statements can be used to set the
// resource flags.
[HostProtectionAttribute(SharedState = true,
SelfAffectingProcessMgmt = true)]
[HostProtectionAttribute(Resources = HostProtectionResource.SharedState |
HostProtectionResource.SelfAffectingProcessMgmt)]
private static void Exit(string Message, int Code)
{
// Exit the sample when an exception is thrown.
Console.WriteLine("\nFAILED: " + Message + " " + Code.ToString());
Environment.ExitCode = Code;
Environment.Exit(Code);
}
// Use the enumeration flags to indicate that this method exposes shared
// state, self-affecting process management, and self-affecting threading.
[HostProtectionAttribute(SharedState=true, SelfAffectingProcessMgmt=true,
SelfAffectingThreading=true, UI=true)]
// This method allows the user to quit the sample.
private static void ExecuteBreak()
{
Console.WriteLine("Executing Debugger.Break.");
Debugger.Break();
Debugger.Log(1,"info","test message");
}
// Use the enumeration flags to indicate that this method exposes shared
// state, self-affecting threading, and the security infrastructure.
[HostProtectionAttribute(SharedState=true, SelfAffectingThreading=true,
SecurityInfrastructure=true)]
// ApplyIdentity sets the current identity.
private static int ApplyIdentity()
{
string[] roles = {"User"};
try
{
AppDomain mAD = AppDomain.CurrentDomain;
GenericPrincipal mGenPr =
new GenericPrincipal(WindowsIdentity.GetCurrent(), roles);
mAD.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
mAD.SetThreadPrincipal(mGenPr);
return Success;
}
catch (Exception e)
{
Exit(e.ToString(), 5);
}
return 0;
}
// The following method is started on a separate thread.
public static void WatchFileEvents()
{
try
{
Console.WriteLine("In the child thread.");
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "C:\\Temp";
// Watch for changes in LastAccess and LastWrite times, and
// name changes to files or directories.
watcher.NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Watch only text files.
watcher.Filter = "*.txt";
// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
// Begin watching.
watcher.EnableRaisingEvents = true;
// Wait for the user to quit the program.
Console.WriteLine("Event handlers have been enabled.");
while(Console.Read()!='q');
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
// Use the enumeration flags to indicate that this method exposes
// synchronization and external threading.
[HostProtectionAttribute(Synchronization=true, ExternalThreading=true)]
private static void StartThread()
{
Thread t = new Thread(new ThreadStart(WatchFileEvents));
// Start the new thread. On a uniprocessor, the thread is not given
// any processor time until the main thread yields the processor.
t.Start();
// Give the new thread a chance to execute.
Thread.Sleep(1000);
}
// Call methods that show the use of the HostProtectionResource enumeration.
[HostProtectionAttribute(Resources=HostProtectionResource.All)]
static int Main(string [] args)
{
try
{
// Show use of the HostProtectionResource.SharedState,
// HostProtectionResource.SelfAffectingThreading, and
// HostProtectionResource.Security enumeration values.
ApplyIdentity();
Directory.CreateDirectory("C:\\Temp");
// Show use of the HostProtectionResource.Synchronization and
// HostProtectionResource.ExternalThreading enumeration values.
StartThread();
Console.WriteLine("In the main thread.");
Console.WriteLine("Deleting and creating 'MyTestFile.txt'.");
if (File.Exists("C:\\Temp\\MyTestFile.txt"))
{
File.Delete("C:\\Temp\\MyTestFile.txt");
}
StreamWriter sr = File.CreateText("C:\\Temp\\MyTestFile.txt");
sr.WriteLine ("This is my file.");
sr.Close();
Thread.Sleep(1000);
// Show use of the HostProtectionResource.SharedState,
// HostProtectionResource.SelfProcessMgmt,
// HostProtectionResource.SelfAffectingThreading, and
// HostProtectionResource.UI enumeration values.
ExecuteBreak();
// Show the use of the
// HostProtectionResource.ExternalProcessManagement
// enumeration value.
MyControl myControl = new MyControl ();
Console.WriteLine ("Enter 'q' to quit the sample.");
return 100;
}
catch (Exception e)
{
Exit(e.ToString(), 0);
return 0;
}
}
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify whether a file is changed, created, or deleted.
Console.WriteLine("In the OnChanged event handler.");
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
}
// The following class is an example of code that exposes
// external process management.
// Add the LicenseProviderAttribute to the control.
[LicenseProvider (typeof(LicFileLicenseProvider))]
public class MyControl : System.Windows.Forms.Control
{
// Create a new, null license.
private License license = null;
[HostProtection (ExternalProcessMgmt = true)]
public MyControl ()
{
// Determine if a valid license can be granted.
bool isValid = LicenseManager.IsValid (typeof(MyControl));
Console.WriteLine ("The result of the IsValid method call is " +
isValid.ToString ());
}
protected override void Dispose (bool disposing)
{
if (disposing)
{
if (license != null)
{
license.Dispose ();
license = null;
}
}
}
}
Imports System.IO
Imports System.Threading
Imports System.Security
Imports System.Security.Policy
Imports System.Security.Principal
Imports System.Security.Permissions
Imports System.Diagnostics
Imports System.ComponentModel
Imports System.Windows.Forms
' If this application is run on a server that implements host protection, the
' HostProtectionAttribute attribute is applied. If the application is run on
' a server that is not host-protected, the attribute evaporates; it is not
' detected and therefore not applied. Host protection can be configured with
' members of the HostProtectionResource enumeration to customize the
' protection offered.
' The primary intent of this sample is to show situations in which the
' HostProtectionAttribute attribute might be meaningfully used. The
' environment required to demonstrate a particular behavior is too
' complex to invoke within the scope of this sample.
Class HostProtectionExample
Public Shared Success As Integer = 100
' Use the enumeration flags to indicate that this method exposes
' shared state and self-affecting process management.
' Either of the following attribute statements can be used to set the
' resource flags.
<HostProtectionAttribute(SharedState := True, _
SelfAffectingProcessMgmt := True), _
HostProtectionAttribute( _
Resources := HostProtectionResource.SharedState Or _
HostProtectionResource.SelfAffectingProcessMgmt)> _
Private Shared Sub [Exit](ByVal Message As String, ByVal Code As Integer)
' Exit the sample when an exception is thrown.
Console.WriteLine((ControlChars.Lf & "FAILED: " & Message & " " & _
Code.ToString()))
Environment.ExitCode = Code
Environment.Exit(Code)
End Sub
' Use the enumeration flags to indicate that this method exposes shared
' state, self-affecting process management, and self-affecting threading.
<HostProtectionAttribute(SharedState := True, _
SelfAffectingProcessMgmt := True, _
SelfAffectingThreading := True, UI := True)> _
Private Shared Sub ExecuteBreak()
' This method allows the user to quit the sample.
Console.WriteLine("Executing Debugger.Break.")
Debugger.Break()
Debugger.Log(1, "info", "test message")
End Sub
' Use the enumeration flags to indicate that this method exposes shared
' state, self-affecting threading, and the security infrastructure.
<HostProtectionAttribute(SharedState := True, _
SelfAffectingThreading := True, _
SecurityInfrastructure := True)> _
Private Shared Function ApplyIdentity() As Integer
' ApplyIdentity sets the current identity.
Dim roles(1) As String
Try
Dim mAD As AppDomain = AppDomain.CurrentDomain
Dim mGenPr As _
New GenericPrincipal(WindowsIdentity.GetCurrent(), roles)
mAD.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
mAD.SetThreadPrincipal(mGenPr)
Return Success
Catch e As Exception
[Exit](e.ToString(), 5)
End Try
Return 0
End Function 'ApplyIdentity
' The following method is started on a separate thread.
Public Shared Sub WatchFileEvents()
Try
Console.WriteLine("In the child thread.")
Dim watcher As New FileSystemWatcher()
watcher.Path = "C:\Temp"
' Watch for changes in LastAccess and LastWrite times, and
' name changes to files or directories.
watcher.NotifyFilter = NotifyFilters.LastAccess Or _
NotifyFilters.LastWrite Or NotifyFilters.FileName Or _
NotifyFilters.DirectoryName
' Watch only text files.
watcher.Filter = "*.txt"
' Add event handlers.
AddHandler watcher.Changed, AddressOf OnChanged
AddHandler watcher.Created, AddressOf OnChanged
AddHandler watcher.Deleted, AddressOf OnChanged
' Begin watching.
watcher.EnableRaisingEvents = True
' Wait for the user to quit the program.
Console.WriteLine("Event handlers have been enabled.")
While Console.ReadLine() <> "q"c
End While
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
' Use the enumeration flags to indicate that this method exposes
' synchronization and external threading.
<HostProtectionAttribute(Synchronization := True, _
ExternalThreading := True)> _
Private Shared Sub StartThread()
Dim t As New Thread(New ThreadStart(AddressOf WatchFileEvents))
' Start the new thread. On a uniprocessor, the thread is not given
' any processor time until the main thread yields the processor.
t.Start()
' Give the new thread a chance to execute.
Thread.Sleep(1000)
End Sub
' Call methods that show the use of the HostProtectionResource enumeration.
<HostProtectionAttribute(Resources := HostProtectionResource.All)> _
Overloads Shared Function Main(ByVal args() As String) As Integer
Try
' Show use of the HostProtectionResource.SharedState,
' HostProtectionResource.SelfAffectingThreading, and
' HostProtectionResource.Security enumeration values.
ApplyIdentity()
Directory.CreateDirectory("C:\Temp")
' Show use of the HostProtectionResource.Synchronization and
' HostProtectionResource.ExternalThreading enumeration values.
StartThread()
Console.WriteLine("In the main thread.")
Console.WriteLine("Deleting and creating 'MyTestFile.txt'.")
If File.Exists("C:\Temp\MyTestFile.txt") Then
File.Delete("C:\Temp\MyTestFile.txt")
End If
Dim sr As StreamWriter = File.CreateText("C:\Temp\MyTestFile.txt")
sr.WriteLine("This is my file.")
sr.Close()
Thread.Sleep(1000)
' Show use of the HostProtectionResource.SharedState,
' HostProtectionResource.SelfProcessMgmt,
' HostProtectionResource.SelfAffectingThreading, and
' HostProtectionResource.UI enumeration values.
ExecuteBreak()
' Show the use of the
' HostProtectionResource.ExternalProcessManagement
' enumeration value.
Dim myControl As New MyControl()
Console.WriteLine("Enter 'q' to quit the sample.")
Return 100
Catch e As Exception
[Exit](e.ToString(), 0)
Return 0
End Try
End Function 'Main
' Define the event handlers.
Private Shared Sub OnChanged(ByVal [source] As Object, _
ByVal e As FileSystemEventArgs)
' Specify whether a file is changed, created, or deleted.
Console.WriteLine("In the OnChanged event handler.")
Console.WriteLine(("File: " & e.FullPath & " " & _
e.ChangeType.ToString()))
End Sub
End Class
' The following class is an example of code that exposes
' external process management.
' Add the LicenseProviderAttribute to the control.
<LicenseProvider(GetType(LicFileLicenseProvider))> _
Public Class MyControl
Inherits System.Windows.Forms.Control
' Create a new, null license.
Private license As License = Nothing
<HostProtectionAttribute(ExternalProcessMgmt := True)> _
Public Sub New()
' Determine if a valid license can be granted.
Dim isValid As Boolean = LicenseManager.IsValid(GetType(MyControl))
Console.WriteLine(("The result of the IsValid method call is " & _
isValid.ToString()))
End Sub
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (license Is Nothing) Then
license.Dispose()
license = Nothing
End If
End If
End Sub
End Class
설명
주의
CAS(코드 액세스 보안)는 .NET Framework 및 .NET의 모든 버전에서 더 이상 사용되지 않습니다. 최신 버전의 .NET은 CAS 주석을 준수하지 않으며 CAS 관련 API를 사용하는 경우 오류가 발생합니다. 개발자는 보안 작업을 수행하는 대체 수단을 찾아야 합니다.
이 특성 호스팅하를 공용 언어 런타임 및 구현 호스트 보호를 SQL Server와 같은 관리 되지 않는 애플리케이션에만 영향을 줍니다. 호스트에서 보호되지 않는 서버나 클라이언트 애플리케이션에서 코드가 실행되면 “evaporates” 특성이 감지되지 않으므로 적용되지 않습니다. 적용되면 보안 작업에서 클래스 또는 메서드가 노출하는 호스트 리소스를 기반으로 링크 요구 사항을 만듭니다.
중요
이 특성은 보안 동작이 아니라 호스트별 프로그래밍 모델 지침을 적용하는 데 사용합니다. 링크 요구 사항을 사용하여 프로그래밍 모델 요구 사항을 만족하는지 확인하지만 HostProtectionAttribute는 보안 권한이 아닙니다.
호스트에 프로그래밍 모델 요구 사항이 없으면 링크 요구가 발생하지 않습니다.
이 특성을 사용하여 다음을 식별합니다.
호스트 프로그래밍 모델에 적합하지 않지만 달리 유해하지 않은 메서드 또는 클래스.
호스트 프로그래밍 모델에 적합하지 않으며 서버 관리 사용자 코드를 불안정하게 만드는 메서드 또는 클래스.
호스트 프로그래밍 모델에 적합하지 않으며 서버 프로세스 자체를 불안정하게 만드는 메서드 또는 클래스.
참고
호스트 보호 환경에서 실행할 수 있는 애플리케이션에서 호출할 클래스 라이브러리를 만드는 경우 HostProtectionResource 리소스 범주를 노출하는 멤버에 이 특성을 적용해야 합니다. 이 특성과 함께 .NET Framework 클래스 라이브러리 멤버를 사용하면 즉각적인 호출자만 검사하게 됩니다. 사용자의 라이브러리 멤버도 이와 동일한 방식으로 즉각적인 호출자 검사만 수행해야 합니다.
참고
Ngen.exe(네이티브 이미지 생성기)를 사용하여 로 보호HostProtectionAttribute되는 어셈블리의 네이티브 이미지를 만들지 마세요. 완전 신뢰 환경에서 이미지는 에 관계없이 HostProtectionAttribute항상 로드되며 부분 신뢰 환경에서는 이미지가 로드되지 않습니다.
생성자
HostProtectionAttribute() |
사용되지 않음.
기본값을 사용하여 HostProtectionAttribute 클래스의 새 인스턴스를 초기화합니다. |
HostProtectionAttribute(SecurityAction) |
사용되지 않음.
지정된 HostProtectionAttribute 값을 사용하여 SecurityAction 클래스의 새 인스턴스를 초기화합니다. |
속성
Action |
사용되지 않음.
보안 동작을 가져오거나 설정합니다. (다음에서 상속됨 SecurityAttribute) |
ExternalProcessMgmt |
사용되지 않음.
자체적으로 영향을 미치는 프로세스 관리가 노출되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
ExternalThreading |
사용되지 않음.
외부 스레딩이 노출되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
MayLeakOnAbort |
사용되지 않음.
작업이 종료되면 리소스에서 메모리가 누수될 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다. |
Resources |
사용되지 않음.
호스트에 좋지 않은 영향을 줄 수 있는 기능의 범주를 지정하는 플래그를 가져오거나 설정합니다. |
SecurityInfrastructure |
사용되지 않음.
보안 인프라가 노출되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
SelfAffectingProcessMgmt |
사용되지 않음.
자체 영향 프로세스 관리가 노출되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
SelfAffectingThreading |
사용되지 않음.
자체 영향 스레딩이 노출되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
SharedState |
사용되지 않음.
공유 상태가 노출되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
Synchronization |
사용되지 않음.
동기화가 노출되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
TypeId |
사용되지 않음.
파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다. (다음에서 상속됨 Attribute) |
UI |
사용되지 않음.
사용자 인터페이스가 노출되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
Unrestricted |
사용되지 않음.
해당 특성에 의해 보호되는 리소스에 대해 전체(무제한) 권한이 선언되는지 여부를 나타내는 값을 가져오거나 설정합니다. (다음에서 상속됨 SecurityAttribute) |
메서드
CreatePermission() |
사용되지 않음.
새 호스트 보호 권한을 만들고 반환합니다. |
Equals(Object) |
사용되지 않음.
이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다. (다음에서 상속됨 Attribute) |
GetHashCode() |
사용되지 않음.
이 인스턴스의 해시 코드를 반환합니다. (다음에서 상속됨 Attribute) |
GetType() |
사용되지 않음.
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
IsDefaultAttribute() |
사용되지 않음.
파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다. (다음에서 상속됨 Attribute) |
Match(Object) |
사용되지 않음.
파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (다음에서 상속됨 Attribute) |
MemberwiseClone() |
사용되지 않음.
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ToString() |
사용되지 않음.
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
사용되지 않음.
이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다. (다음에서 상속됨 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
사용되지 않음.
인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다. (다음에서 상속됨 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
사용되지 않음.
개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1). (다음에서 상속됨 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
사용되지 않음.
개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다. (다음에서 상속됨 Attribute) |
적용 대상
추가 정보
.NET