dotnet:isolatedstoragefile

文書の過去の版を表示しています。


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());
        }
 
    }
}

 Windowsのセキュリティ設定で、「システム暗号化: 暗号化、ハッシュ、署名のための FIPS 準拠アルゴリズムを使う」を有効に設定している場合、分離ストレージの取得で InvalidOperationException例外が発生する。例外メッセージは、「この実装は Windows プラットフォーム FIPS 検証暗号化アルゴリズムの一部ではありません。」というもの。

 これは、分離ストレージが内部的に利用しているSHA1Managedクラスが、FIPS(連邦情報処理標準)アルゴリズムに準拠していないためである。つまり、これはSHA1Managedクラスの仕様であり、SHA1Managedクラスも使用できなくなる。

 この問題を回避するには、以下の手順を実施して「システム暗号化: 暗号化、ハッシュ、署名のための FIPS 準拠アルゴリズムを使う」の設定を無効にする必要がある。

  • dotnet/isolatedstoragefile.1257579452.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)