Bagikan melalui


SecurityState Kelas

Definisi

Menyediakan kelas dasar untuk meminta status keamanan tindakan dari AppDomainManager objek .

public ref class SecurityState abstract
public abstract class SecurityState
[System.Security.SecurityCritical]
public abstract class SecurityState
type SecurityState = class
[<System.Security.SecurityCritical>]
type SecurityState = class
Public MustInherit Class SecurityState
Warisan
SecurityState
Turunan
Atribut

Contoh

Contoh berikut menunjukkan cara mengambil SecurityState alih kelas.

[SecurityCritical]  
public enum WebcamSecurityOptions
{
    SafeAccess,  
    FullAccess  
}  
[SecurityCritical]  
public class WebcamSecurityState : SecurityState  
{  
    public WebcamSecurityState(string description, WebcamSecurityOptions options)  
    {  
        Options = options;  
        Description = description;  
    }  
    public WebcamSecurityOptions Options { get; set; }  
    public string Description { get; set; }  
    public override void EnsureState()  
    {  
        if (!IsStateAvailable())  
            throw new ApplicationException("WebcamSecurityState not available");  
    }  
}    

Keterangan

Anda harus mewarisi dari kelas ini untuk menyediakan kelas yang menyertakan properti yang menentukan tindakan sensitif keamanan yang akan dilakukan. Objek SecurityState yang dibuat dari kelas turunan diteruskan ke AppDomainManager.CheckSecuritySettings metode untuk menentukan apakah host memungkinkan tindakan tersebut dilakukan. Implementasi CheckSecuritySettings default metode selalu mengembalikan false. Metode harus ditimpa untuk mendeteksi tindakan yang diizinkan.

Misalnya, jika Anda ingin mengakses kamera Web dalam kode pustaka, Anda akan membuat WebcamSecurityState objek dan memanggil EnsureState metode untuk menentukan apakah host mengizinkan akses kamera Web, seperti yang ditunjukkan dalam contoh berikut. (Anda dapat menemukan kode untuk WebcamSecurityState di bagian "Contoh".)

var securityState = new WebcamSecurityState("Safe access to Webcam", WebcamSecurityOptions.SafeAccess);  
try  
{  
    securityState.EnsureState();  
    // Allocate memory.  
}  
catch (ApplicationException e)  
{  
    // Handle any exception that is thrown.  
    System.Diagnostics.Debug.WriteLine(e.Message);  
}  

Untuk memproses panggilan yang AppDomainManager harus diperhatikan WebcamSecurityState melalui penimpaan AppDomainManager.CheckSecuritySettings metode, seperti yang ditunjukkan dalam contoh berikut.

[SecurityCritical]  
public override bool CheckSecuritySettings(System.Security.SecurityState securityState)  
{  
    switch (securityState.ToString())  
    {  
        case "WebcamSecurityState":  
        {  
            if ((securityState as WebcamSecurityState).Options == WebcamSecurityOptions.SafeAccess)  
                return PromptUser((securityState as WebcamSecurityState).Description);  
            return false;  
        }  
    }  
    return false;  
}  
private bool PromptUser(string text)  
{  
    // Replace the OpenFileDialog with a custom user prompt.  
    OpenFileDialog o = new OpenFileDialog();  
    o.Title = text;  
    if (o.ShowDialog() == DialogResult.OK)  
        return true;  
    else  
        return false;  
}   

Konstruktor

SecurityState()

Menginisialisasi instans baru kelas SecurityState.

Metode

EnsureState()

Ketika ditimpa di kelas turunan, memastikan bahwa status yang diwakili oleh SecurityState tersedia di host.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
IsStateAvailable()

Mendapatkan nilai yang menunjukkan apakah status untuk implementasi SecurityState kelas ini tersedia pada host saat ini.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk