Share via


隔離儲存區

隔離儲存區 (Isolated Storage) 為資料儲存機制,藉著定義標準化方式,將程式碼與儲存的資料產生關聯,以提供隔離和安全。 標準化也提供其他利益。 系統管理員可以使用設計來操作隔離儲存區的工具,設定檔案存放空間、設定安全性原則,和刪除未使用的資料。 有了隔離儲存區,您的程式碼不再需要唯一路徑去指定檔案系統中的安全位置,並且資料也被保護以免受到只擁有隔離儲存區存取權的其他應用程式的影響。 指示應用程式之儲存區域所在位置的硬式編碼資訊是沒有必要的。

此主題包括下列章節:

  • 資料區間和存放區

  • 安全存取

  • 隔離儲存區位置

  • 建立、列舉和刪除隔離儲存區

  • 隔離儲存區的案例

  • 相關主題

  • 參考資料

資料區間和存放區

當應用程式在檔案中儲存資料時,您必須小心選擇檔案名稱和儲存位置,將儲存位置為另一個應用程式知悉因而遭受損毀的可能性降至最低。 若沒有一個標準系統從中管理這些問題,開發特別技術以使儲存衝突降至最低可能會很複雜,而且結果也不可靠。

有了隔離儲存區,資料永遠按照使用者和按照組件 (Assembly) 來隔離。 認證 (例如組件的來源或強式名稱) 會決定組件的識別 (Identity)。 資料也可以使用類似的認證,依據應用程式定義域來隔離。

使用隔離儲存區時,應用程式會儲存資料至與程式碼識別之某些方面 (例如它的發行者或簽章) 相關的唯一資料區間。 資料區間為抽象概念,不是特定儲存位置;它由一個或多個稱為存放區的隔離儲存區檔案 (包含資料儲存的實際目錄位置) 所構成。 例如,應用程式可能具有與它相關的資料區間,而檔案系統中的目錄則將實作實際保留那個應用程式資料的存放區。 儲存在存放區中的資料可以是任何種類的資料,從使用者的喜好資訊至應用程式的狀態。 對於開發人員,資料區間的位置是透明的;存放區通常位於用戶端,但伺服器應用程式可以經由模擬使用者以代表他進行運作,來使用隔離存放區儲存資訊。 隔離儲存區 (Isolated Storage) 也可以配合使用者漫遊設定檔在伺服器上儲存資訊,讓漫遊使用者隨時隨地都能使用資訊。

回到頁首

安全存取

隔離儲存區的使用讓部分受信任的應用程式能夠藉由電腦的安全性原則所控制的方式來儲存資料。 這對於使用者可能要小心翼翼執行的下載元件特別有用。 安全性原則很少將透過標準 I/O 機制存取檔案系統的使用權限授與這類程式碼。 不過,根據預設,從本機電腦、區域網路或網際網路執行的程式碼將被授與使用隔離儲存區的權限。

系統管理員可以根據適當的信任等級,限制應用程式或使用者可使用多少隔離儲存區。 此外,系統管理員可以完全移除使用者的保存資料。 若要建立或存取隔離儲存區,必須授與程式碼適當的 IsolatedStorageFilePermission

若要存取隔離儲存區,程式碼必須擁有所有必要的原生 (Native) 平台作業系統權限。 例如,在 Windows 2000 上必須滿足存取控制清單 (ACL),以控制哪一個使用者擁有使用檔案系統的權限。 .NET Framework 應用程式已經擁有作業系統權限以存取隔離儲存區,除非它們執行 (平台特定) 模擬。 在這個狀況中,應用程式有責任確保模擬的使用者識別具有適當的作業系統權限,以存取隔離儲存區。 這個存取對於從 Web 執行或下載的程式碼提供便利的方式,以讀取和寫入與特定使用者有關的儲存區域。

回到頁首

隔離儲存區位置

有時候,使用作業系統的檔案系統來驗證隔離儲存區的變更,很有用處。 開發人員可能也需要知道隔離儲存區檔案的位置。 這個位置依作業系統而不同。 下表顯示在幾個一般作業系統上建立隔離儲存區所在的根 (Root) 位置。 尋找這個根位置下的 Microsoft\IsolatedStorage 目錄。 您必須變更資料夾設定值來顯示隱藏的檔案和資料夾,以便可以在檔案系統中看到隔離儲存區。

作業系統

檔案系統中的位置

Windows 98、Windows Me - 未啟用使用者設定檔

啟用漫遊的存放區 =

<SYSTEMROOT>\Application Data

非漫遊存放區 = WINDOWS\Local Settings\Application Data

Windows 98、Windows Me - 已啟用使用者設定檔

啟用漫遊的存放區 =

<SYSTEMROOT>\Profiles\<user>\Application Data

非漫遊存放區 = Windows\Local Settings\Application Data

Windows NT 4.0

<SYSTEMROOT>\Profiles\<user>\Application Data

Windows NT 4.0 - Service Pack 4

啟用漫遊的存放區 =

<SYSTEMROOT>\Profiles\<user>\Application Data

非漫遊存放區 =

<SYSTEMROOT>\Profiles\<user>\Local Settings\Application Data

Windows 2000、Windows XP、Windows Server 2003 - 從 Windows NT 4.0 升級

啟用漫遊的存放區 =

<SYSTEMROOT>\Profiles\<user>\Application Data

非漫遊存放區 =

<SYSTEMROOT>\Profiles\<user>\Local Settings\Application Data

Windows 2000 - 全新安裝 (以及從 Windows 98 和 Windows NT 3.51 升級)

啟用漫遊的存放區 =

<SYSTEMDRIVE>\Documents and Settings\<user>\Application Data

非漫遊存放區 =

<SYSTEMDRIVE>\Documents and Settings\<user>\Local Settings\Application Data

Windows XP、Windows Server 2003 - 全新安裝 (以及從 Windows 2000 和 Windows 98 升級)

啟用漫遊的存放區 =

<SYSTEMDRIVE>\Documents and Settings\<user>\Application Data

非漫遊存放區 =

<SYSTEMDRIVE>\Documents and Settings\<user>\Local Settings\Application Data

Windows Vista

啟用漫遊的存放區 =

<SYSTEMDRIVE>\Users\<user>\AppData\Roaming

非漫遊存放區 =

<SYSTEMDRIVE>\Users\<user>\AppData\Local

回到頁首

建立、列舉和刪除隔離儲存區

提供三個主要類別,幫助您執行涉及隔離儲存區的工作:

隔離儲存區類別允許您建立、列舉和刪除隔離儲存區。 您可以透過 IsolatedStorageFile 物件使用執行這些工作的方法。 某些作業會要求您擁有代表管理隔離儲存區權限的 IsolatedStorageFilePermission;您可能也需要擁有作業系統權限以存取檔案或目錄。 在 Microsoft Windows NT、Microsoft Windows 2000、Windows XP 和 Windows Vista 上,檔案的存取控制清單 (ACL) 設定可防止您存取隔離儲存區。 隔離儲存區工具 (Storeadm.exe) 也可以用於簡單存放區管理,例如,列出或刪除目前使用者的所有存放區。

如需示範常見隔離儲存區工作的一系列範例,請參閱相關主題中所列的 HOW TO 主題。 每個範例都有原始程式檔,描述一個特定的工作。 設定、編譯和執行的指令包含在各個範例的主要網頁上。 該範例只提供 C# 的示範。

回到頁首

隔離儲存區的案例

隔離儲存區在許多場合中都很有用處。 五個立即可辨認的案例說明如下:

  • 下載的控制項。 從網際網路下載的 Managed 程式碼控制項不允許透過一般 I/O 類別寫入硬碟,但它們可以使用隔離儲存區保存 (Persist) 使用者的設定值和應用程式狀態。

  • 共用的元件儲存區。 應用程式之間共用的元件可以使用隔離儲存區以提供對資料存放區的控制存取。

  • 伺服器儲存區。 伺服器應用程式可以使用隔離儲存區,提供個別存放區給向應用程式產生要求的大量使用者。 因為隔離儲存區一直根據使用者來分離,伺服器必須模擬提出要求的使用者。 在這個狀況中,資料是根據主體的識別 (應用程式用以區別其使用者的相同識別) 來隔離。

  • 漫遊。 應用程式也可以根據漫遊使用者設定檔來使用隔離儲存區。 這允許使用者的隔離存放區隨著設定檔而漫遊。

雖然隔離儲存區相當適合前述的案例,有一些狀況中,您不應該使用隔離儲存區:

  • 因為隔離儲存區不能防範高度受信任程式碼、Unmanaged 程式碼或電腦的信任使用者,所以請勿使用隔離儲存區來存放具高度價值的秘密,例如未加密的金鑰或密碼。

  • 請勿使用隔離儲存區來儲存程式碼。

  • 請勿使用隔離儲存區來儲存系統管理員所控制的組態和部署設定值 (使用者喜好不算是組態設定,因為系統管理員並不控制它們)。

許多現今的應用程式使用資料庫來儲存並隔離資料,這樣的情況下,資料庫中的一個或多個資料列可能代表特定使用者的儲存區。 當使用者數目還小、使用資料庫的耗用很重大,或沒有資料庫設備存在時,您可以選擇使用隔離儲存區代替資料庫。 同樣,當應用程式需要較資料庫資料列所提供更為彈性和複雜的儲存區時,隔離儲存區可以提供可行的替代方案。

回到頁首

相關主題

標題

說明

隔離的類型

描述各種類型的隔離。

HOW TO:取得離儲存區的存放區

提供使用 IsolatedStorageFile 類別的範例,示範如何使用它來取得使用者和組件所隔離的存放區。

HOW TO:列舉隔離儲存區的存放區

示範如何使用 IsolatedStorageFile.GetEnumerator 方法來計算使用者之所有隔離儲存區的大小。

HOW TO:刪除隔離儲存區中的存放區

示範如何使用 IsolatedStorageFile.Remove 方法,以兩種不同的方式刪除隔離存放區。

HOW TO:預期隔離儲存區發生空間不足的情況

示範如何測量隔離存放區內的剩餘空間。

HOW TO:在隔離儲存區中建立檔案和目錄

提供一些在隔離存放區中建立檔案和目錄的範例。

HOW TO:尋找隔離儲存區中的現有檔案和目錄

示範如何在隔離儲存區中讀取目錄結構和檔案。

HOW TO:讀取和寫入離儲存區中的檔案

提供寫入字串至 IsolatedStorageFile 並將它讀回的範例。

HOW TO:刪除隔離儲存區中的檔案和目錄

示範如何刪除隔離儲存區的檔案和目錄。

檔案和資料流 I/O

說明如何執行同步和非同步檔案及資料流存取。

回到頁首

參考資料

System.IO.IsolatedStorage.IsolatedStorage