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

 分離ストレージ ツールを利用すると、現在マシンに存在する ユーザーストアおよびマシンストアの一覧を表示したり削除することができる。

コマンド例 説明
storeadm /list ユーザー ストアを一覧表示する。
storeadm /list /machine マシン ストアを一覧表示する。
storeadm /list /roaming ローミング ストアを一覧表示する。
storeadm /remove ユーザー ストアを削除する。
storeadm /remove /machine マシン ストアを削除する。
storeadm /remove /roaming ローミング ストアを削除する。
storeadm /remove /quiet クワイエット モードは、情報の表示を抑制する。
storeadm /help 使い方を表示する。
> storeadm /list
C:\>storeadm /list
Microsoft (R) .NET Framework Store Admin 3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

Record #1
[Assembly]
<System.Security.Policy.Publisher version="1">
<X509v3Certificate>4563987...
</X509v3Certificate>
</System.Security.Policy.Publisher>

        Size : 1024
Record #2
[Application]
<StrongName version="1"
Key="0000000000000000"
Name="HogeHoge.application"
Version="9.0.0.5380"/>

        Size : 1024
> storeadm /machine /remove
Microsoft (R) .NET Framework Store Admin 3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

Unable to delete some files, the store could be in use.

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

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

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

  1. [スタート]メニューの[ファイル名を指定して実行]をクリックする。
  2. 名前テキストボックスに「gpedit.msc」と入力して[OK]ボタンをクリックする。
    gpedit_run
  3. 「グループ ポリシー」の画面で、[ローカル コンピュータ ポリシー] - [Windows の設定] - [セキュリティの設定] - [ローカル ポリシー]を展開して、[セキュリティ オプション]を選択する。
    gpedit_security_option
  4. ポリシーの「システム暗号化: 暗号化、ハッシュ、署名のための FIPS 準拠アルゴリズムを使う」をダブルクリックする。
    gpedit_security_option_fips
  5. [有効]である場合は、[無効]をクリックして[OK]ボタンをクリックする。
    gpedit_security_option_fips_off
  • dotnet/isolatedstoragefile.txt
  • 最終更新: 2019/05/18 02:23
  • by 非ログインユーザー