Share via


IsolatedStorageContainment Enum

Definisi

Perhatian

Code Access Security is not supported or honored by the runtime.

Menentukan penggunaan penyimpanan terisolasi yang diizinkan.

public enum class IsolatedStorageContainment
public enum IsolatedStorageContainment
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public enum IsolatedStorageContainment
[System.Serializable]
public enum IsolatedStorageContainment
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum IsolatedStorageContainment
type IsolatedStorageContainment = 
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type IsolatedStorageContainment = 
[<System.Serializable>]
type IsolatedStorageContainment = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type IsolatedStorageContainment = 
Public Enum IsolatedStorageContainment
Warisan
IsolatedStorageContainment
Atribut

Bidang

AdministerIsolatedStorageByUser 112

Kemampuan administrasi tidak terbatas untuk penyimpanan pengguna. Memungkinkan penjelajahan dan penghapusan seluruh penyimpanan pengguna, tetapi tidak membaca akses selain identitas domain/perakitan pengguna sendiri.

ApplicationIsolationByMachine 69

Penyimpanan diisolasi terlebih dahulu oleh komputer dan kemudian dengan aplikasi. Ini menyediakan penyimpanan data untuk aplikasi yang dapat diakses dalam konteks domain apa pun. Kompartemen data per aplikasi memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu.

ApplicationIsolationByRoamingUser 101

Penyimpanan diisolasi terlebih dahulu oleh pengguna dan kemudian dengan bukti aplikasi. Penyimpanan akan menjelajah jika roaming data pengguna Windows diaktifkan. Ini menyediakan penyimpanan data untuk aplikasi yang dapat diakses dalam konteks domain apa pun. Kompartemen data per aplikasi memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu.

ApplicationIsolationByUser 21

Penyimpanan diisolasi terlebih dahulu oleh pengguna dan kemudian dengan aplikasi. Penyimpanan juga diisolasi oleh komputer. Ini menyediakan penyimpanan data untuk aplikasi yang dapat diakses dalam konteks domain apa pun. Kompartemen data per aplikasi memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu.

AssemblyIsolationByMachine 64

Penyimpanan diisolasi terlebih dahulu oleh komputer dan kemudian dengan rakitan kode. Ini menyediakan penyimpanan data untuk perakitan yang dapat diakses dalam konteks domain apa pun. Kompartemen data perakitan memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu.

AssemblyIsolationByRoamingUser 96

Penyimpanan diisolasi terlebih dahulu oleh pengguna dan kemudian dengan bukti perakitan. Penyimpanan akan menjelajah jika roaming data pengguna Windows diaktifkan. Ini menyediakan penyimpanan data untuk perakitan yang dapat diakses dalam konteks domain apa pun. Kompartemen data perakitan memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu.

AssemblyIsolationByUser 32

Penyimpanan diisolasi terlebih dahulu oleh pengguna lalu dengan rakitan kode. Penyimpanan juga diisolasi oleh komputer. Ini menyediakan penyimpanan data untuk perakitan yang dapat diakses dalam konteks domain apa pun. Kompartemen data perakitan memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu.

DomainIsolationByMachine 48

Penyimpanan diisolasi terlebih dahulu oleh komputer lalu berdasarkan domain dan perakitan. Data hanya dapat diakses dalam konteks aplikasi yang sama dan hanya ketika dijalankan pada komputer yang sama. Ini berguna ketika rakitan pihak ketiga ingin menyimpan penyimpanan data privat.

DomainIsolationByRoamingUser 80

Penyimpanan diisolasi terlebih dahulu oleh pengguna lalu berdasarkan domain dan perakitan. Penyimpanan akan menjelajah jika roaming data pengguna Windows diaktifkan. Data hanya dapat diakses dalam konteks aplikasi yang sama dan hanya ketika dijalankan oleh pengguna yang sama. Ini berguna ketika rakitan pihak ketiga ingin menyimpan penyimpanan data privat.

DomainIsolationByUser 16

Penyimpanan diisolasi terlebih dahulu oleh pengguna lalu berdasarkan domain dan perakitan. Penyimpanan juga diisolasi oleh komputer. Data hanya dapat diakses dalam konteks aplikasi yang sama dan hanya ketika dijalankan oleh pengguna yang sama. Ini berguna ketika rakitan pihak ketiga ingin menyimpan penyimpanan data privat.

None 0

Penggunaan penyimpanan terisolasi tidak diperbolehkan.

UnrestrictedIsolatedStorage 240

Penggunaan penyimpanan terisolasi diizinkan tanpa batasan. Kode memiliki akses penuh ke bagian mana pun dari penyimpanan pengguna, terlepas dari identitas domain atau perakitan. Penggunaan penyimpanan terisolasi ini mencakup kemampuan untuk menghitung konten penyimpanan data penyimpanan yang terisolasi.

Contoh

Contoh ini menunjukkan cara memberi tahu CLR bahwa kode dalam perakitan ini memerlukan IsolatedStoragePermission dan juga menunjukkan cara menulis dan membaca dari penyimpanan yang terisolasi.

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::IO::IsolatedStorage;
using namespace System::IO;


static void WriteIsolatedStorage()
{
    try
    {
        // Attempt to create a storage file that is isolated by
        // user and assembly. IsolatedStorageFilePermission
        // granted to the attribute at the top of this file
        // allows CLR to load this assembly and execution of this
        // statement.
        Stream^ fileCreateStream = gcnew
            IsolatedStorageFileStream(
            "AssemblyData",
            FileMode::Create,
            IsolatedStorageFile::GetUserStoreForAssembly());

        StreamWriter^ streamWriter = gcnew StreamWriter(
            fileCreateStream);
        try
        {
            // Write some data out to the isolated file.

            streamWriter->Write("This is some test data.");
            streamWriter->Close();	
        }
        finally
        {
            delete fileCreateStream;
            delete streamWriter;
        } 
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }

    try
    {
        Stream^ fileOpenStream =
            gcnew IsolatedStorageFileStream(
            "AssemblyData",
            FileMode::Open,
            IsolatedStorageFile::GetUserStoreForAssembly());
        // Attempt to open the file that was previously created.

        StreamReader^ streamReader = gcnew StreamReader(
            fileOpenStream);
        try
        { 
            // Read the data from the file and display it.

            Console::WriteLine(streamReader->ReadLine());
            streamReader->Close();
        }
        finally
        {
            delete fileOpenStream;
            delete streamReader;
        }
    }
    catch (FileNotFoundException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
// Notify the CLR to only grant IsolatedStorageFilePermission to called methods. 
// This restricts the called methods to working only with storage files that are isolated 
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction::PermitOnly, UsageAllowed = IsolatedStorageContainment::AssemblyIsolationByUser)]
int main()
{
    WriteIsolatedStorage();
}

// This code produces the following output.
//
//  This is some test data.
using System;
using System.Security.Permissions;
using System.IO.IsolatedStorage;
using System.IO;

// Notify the CLR to only grant IsolatedStorageFilePermission to called methods.
// This restricts the called methods to working only with storage files that are isolated
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed = IsolatedStorageContainment.AssemblyIsolationByUser)]
public sealed class App
{
    static void Main()
    {
        WriteIsolatedStorage();
    }
    private static void WriteIsolatedStorage()
    {
        // Attempt to create a storage file that is isolated by user and assembly.
        // IsolatedStorageFilePermission granted to the attribute at the top of this file
        // allows CLR to load this assembly and execution of this statement.
        using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly()))
        {

            // Write some data out to the isolated file.
            using (StreamWriter sw = new StreamWriter(s))
            {
                sw.Write("This is some test data.");
            }
        }

        // Attempt to open the file that was previously created.
        using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
        {
            // Read the data from the file and display it.
            using (StreamReader sr = new StreamReader(s))
            {
                Console.WriteLine(sr.ReadLine());
            }
        }
    }
}

// This code produces the following output.
//
//  Some test data.
Option Strict On
Imports System.Security.Permissions
Imports System.IO.IsolatedStorage
Imports System.IO


' Notify the CLR to only grant IsolatedStorageFilePermission to called methods. 
' This restricts the called methods to working only with storage files that are isolated 
' by user and assembly.
<IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed:=IsolatedStorageContainment.AssemblyIsolationByUser)> _
Public NotInheritable Class App

    Shared Sub Main()
        WriteIsolatedStorage()
    End Sub
    Shared Sub WriteIsolatedStorage()
        ' Attempt to create a storage file that is isolated by user and assembly.
        ' IsolatedStorageFilePermission granted to the attribute at the top of this file 
        ' allows CLR to load this assembly and execution of this statement.
        Dim s As New IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly())
        Try

            ' Write some data out to the isolated file.
            Dim sw As New StreamWriter(s)
            Try
                sw.Write("This is some test data.")
            Finally
                sw.Dispose()
            End Try
        Finally
            s.Dispose()
        End Try

        ' Attempt to open the file that was previously created.
        Dim t As New IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly())
        Try
            ' Read the data from the file and display it.
            Dim sr As New StreamReader(t)
            Try
                Console.WriteLine(sr.ReadLine())
            Finally
                sr.Dispose()
            End Try
        Finally
            t.Dispose()
        End Try

    End Sub
End Class

' This code produces the following output.
'
'  Some test data.

Keterangan

Perhatian

Keamanan Akses Kode (CAS) tidak digunakan lagi di semua versi .NET Framework dan .NET. Versi terbaru .NET tidak mematuhi anotasi CAS dan menghasilkan kesalahan jika API terkait CAS digunakan. Pengembang harus mencari cara alternatif untuk menyelesaikan tugas keamanan.

Penyimpanan terisolasi menggunakan bukti untuk menentukan area penyimpanan unik untuk digunakan oleh aplikasi atau komponen. Identitas perakitan secara unik menentukan akar sistem file virtual untuk digunakan oleh perakitan tersebut. Dengan demikian, daripada banyak aplikasi dan komponen yang berbagi sumber daya umum seperti sistem file atau registri, masing-masing memiliki area file sendiri yang secara inheren ditetapkan untuk itu.

Empat cakupan isolasi dasar digunakan saat menetapkan penyimpanan terisolasi:

  • User - Kode selalu dilingkup sesuai dengan pengguna saat ini. Rakitan yang sama akan menerima penyimpanan yang berbeda saat dijalankan oleh pengguna yang berbeda.

  • Machine - Kode selalu dilingkup sesuai dengan mesin. Rakitan yang sama akan menerima penyimpanan yang sama saat dijalankan oleh pengguna yang berbeda pada komputer yang sama.

  • Assembly- Kode diidentifikasi secara kriptografis dengan nama yang kuat (misalnya, Microsoft.Office.* atau Microsoft.Office.Word), oleh penerbit (berdasarkan kunci publik), dengan URL (misalnya, http://www.fourthcoffee.com/process/grind.htm), menurut situs, atau berdasarkan zona.

  • Domain - Kode diidentifikasi berdasarkan bukti yang terkait dengan domain aplikasi. Identitas aplikasi web berasal dari URL situs, atau oleh URL, situs, atau zona halaman Web. Identitas kode lokal didasarkan pada jalur direktori aplikasi.

Untuk definisi URL, situs, dan zona, lihat UrlIdentityPermission, SiteIdentityPermission, dan ZoneIdentityPermission.

Identitas ini dikelompokkan bersama-sama, dalam hal ini identitas diterapkan satu demi satu sampai penyimpanan terisolasi yang diinginkan dibuat. Pengelompokan yang valid adalah User+Assembly dan User+Assembly+Domain. Pengelompokan identitas ini berguna dalam banyak aplikasi yang berbeda.

Jika data disimpan oleh domain, pengguna, dan assembly, data bersifat privat dalam satu-satunya kode dalam perakitan tersebut yang dapat mengakses data. Penyimpanan data juga diisolasi oleh aplikasi tempatnya berjalan, sehingga perakitan tidak mewakili potensi kebocoran dengan mengekspos data ke aplikasi lain.

Isolasi oleh assembly dan pengguna dapat digunakan untuk data pengguna yang berlaku di beberapa aplikasi; misalnya, informasi lisensi, atau informasi pribadi pengguna (nama, kredensial autentikasi, dan sebagainya) yang independen dari aplikasi.

IsolatedStorageContainment mengekspos bendera yang menentukan apakah aplikasi diizinkan untuk menggunakan penyimpanan terisolasi dan, jika demikian, kombinasi identitas mana yang diizinkan untuk menggunakannya. Ini juga menentukan apakah aplikasi diizinkan untuk menyimpan informasi di lokasi yang dapat menjelajah dengan pengguna (Profil Pengguna Roaming Windows atau Pengalihan Folder harus dikonfigurasi).

Berlaku untuk

Lihat juga