SecurityState Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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) |