目次
文書の過去の版を表示しています。
IsolatedStorageFile クラス (System.IO.IsolatedStorage)
.NET Frameworkには、アプリケーションの信頼性を向上させる仕組みとして、分離ストレージ(Isolated Storage)という機能が存在する。
この機能を利用してアプリケーションの重要なデータを保存しておくと、データが不用意に書き換えられたり、破壊してしまうようなトラブルの発生の可能性を最小にすることができる。
using System; using System.IO; using System.IO.IsolatedStorage; class Program { static void Main() { // 分離ストレージを取得(アセンブリ単位のスコープ) IsolatedStorageFile isolatedStorageFile = IsolatedStorageFile.GetMachineStoreForAssembly(); // 分離ストレージファイルのストリームを開く(読み込み用) using (IsolatedStorageFileStream outputStream = new IsolatedStorageFileStream("TextFile.txt", FileMode.Create, FileAccess.Write, isolatedStorageFile)) // ストリーム経由でデータを書き込む using (StreamWriter writer = new StreamWriter(outputStream)) { writer.WriteLine("データ書き込み"); } // 分離ストレージファイルのストリームを開く(書き込み用) using (IsolatedStorageFileStream inputStream = new IsolatedStorageFileStream("TextFile.txt", FileMode.Open, FileAccess.Read, isolatedStorageFile)) // ストリーム経由でデータを書き込む using (StreamReader reader = new StreamReader(inputStream)) { Console.WriteLine(reader.ReadToEnd()); } } }
分離ストレージの取得でInvalidOperationException例外が発生する場合
Windowsのセキュリティ設定で、「システム暗号化: 暗号化、ハッシュ、署名のための FIPS 準拠アルゴリズムを使う」を有効に設定している場合、分離ストレージの取得で InvalidOperationException例外が発生する。例外メッセージは、「この実装は Windows プラットフォーム FIPS 検証暗号化アルゴリズムの一部ではありません。」というもの。
これは、分離ストレージが内部的に利用しているSHA1Managedクラスが、FIPS(連邦情報処理標準)アルゴリズムに準拠していないためである。つまり、これはSHA1Managedクラスの仕様であり、SHA1Managedクラスも使用できなくなる。
この問題を回避するには、Windowsのセキュリティ設定で「システム暗号化: 暗号化、ハッシュ、署名のための FIPS 準拠アルゴリズムを使う」の設定を無効にする必要がある。
そのためには、以下の手順を実施する。
- [スタート]メニューの[ファイル名を指定して実行]をクリックする。
- 名前テキストボックスに「gpedit.msc」と入力して[OK]ボタンをクリックする。
- 「グループ ポリシー」の画面で、[ローカル コンピュータ ポリシー] - [Windows の設定] - [セキュリティの設定] - [ローカル ポリシー]を展開して、[セキュリティ オプション]を選択する。
- ポリシーの「システム暗号化: 暗号化、ハッシュ、署名のための FIPS 準拠アルゴリズムを使う」をダブルクリックする。
- [有効]である場合は、[無効]をクリックして[OK]ボタンをクリックする。