.NET TIPS

分離ストレージの容量を調べるには?[C#、VB]

デジタルアドバンテージ 一色 政彦
2007/05/31

 分離ストレージには利用可能な容量に制限がある。この容量制限(以降、ディスク・クォータ)はセキュリティ環境(例えばInternetゾーン)などによって異なるため一概には判断できないので注意が必要だ(分離ストレージについては「TIPS:分離ストレージを活用するには?」を参照されたい)。

 ディスク・クォータを調べる方法には「ツールによる方法」と「コードによる方法」があるので、それぞれ解説しよう。

ツールによりディスク・クォータを調べるには?

 ディスク・クォータを調べるには、「Microsoft .NET Framework x.x 構成」(x.xには1.0、1.1、2.0などの.NET Frameworkのバージョン番号が入る)というツールを利用すればよい。なお、このツールは.NET Framework SDKに付属するものであるため、あらかじめ(.NET Frameworkのバージョンに合った).NET Framework SDKをコンピュータにインストールしておく必要がある(Visual Studioをインストールするとオプションによっては自動的に入る)。

 次の画面は実際に「Microsoft .NET Framework 2.0 構成」を利用して、Internetゾーンにおけるディスク・クォータを調べているところだ。

「Microsoft .NET Framework 2.0 構成」ツールでのディスク・クォータの確認方法
Internetゾーンにおけるディスク・クォータを調べているところ。「Microsoft .NET Framework 2.0 構成」ツールは、[スタート]メニューの[すべてのプログラム]−[管理ツール]−[Microsoft .NET Framework 2.0 構成]から起動できる。
  [Console Root]−[.NET Framework 2.0 Configuration]−[マイ コンピュータ]−[ランタイム セキュリティ ポリシー]−[コンピュータ (Machine)]−[アクセス許可セット]−[Internet]を選択。
  [分離ストレージ ファイル]をダブルクリック。これにより[アクセス許可ビューア (読み取り専用)]ダイアログが表示される。
  [ディスク クォータ]の項目を見ると、その容量がBytes単位で表示される。この例では「512000」Bytes(=500KBytes)と表示されている。

 上記の画面の例では、ディスク・クォータが512000Bytes(=500KBytes)なのが分かる。

 この値はプログラミング・コードから取得することもできる。

コードによりディスク・クォータを調べるには?

 (プログラムに割り当てられた)分離ストレージ環境のディスク・クォータのサイズ(全容量)は、分離ストレージ環境を表すIsolatedStorageFileオブジェクト(System.IO.IsolatedStorage名前空間)のMaximumSizeプロパティから取得できる。また、すでに使用済みの容量はCurrentSizeプロパティから取得できるので、MaximumSizeプロパティの値からCurrentSizeプロパティの値を引けば、分離ストレージの空き容量が求まる。

 次のコードは実際に、「全容量」「使用済みの容量」「空き容量」を調べて、それぞれの値をコンソール上に表示するサンプル・プログラムだ。

using System;
using System.IO.IsolatedStorage;

class Program
{
  static void Main()
  {
    // 分離ストレージ環境を取得
    IsolatedStorageFile isoStore =
      IsolatedStorageFile.GetUserStoreForDomain();

    Console.WriteLine("全容量:{0}Bytes",
      isoStore.MaximumSize);

    Console.WriteLine("使用済み容量:{0}Bytes",
      isoStore.CurrentSize);

    Console.WriteLine("空き容量:{0}Bytes",
      isoStore.MaximumSize - isoStore.CurrentSize);

    // 分離ストレージ環境を解放
    isoStore.Dispose();
  }
}
Imports System.IO.IsolatedStorage

Module Module1

  Sub Main()
    ' 分離ストレージ環境を取得
    Dim isoStore As IsolatedStorageFile = _
      IsolatedStorageFile.GetUserStoreForDomain()

    Console.WriteLine("全容量:{0}Bytes", _
      isoStore.MaximumSize)

    Console.WriteLine("使用済み容量:{0}Bytes", _
      isoStore.CurrentSize)

    Console.WriteLine("空き容量:{0}Bytes", _
      isoStore.MaximumSize - isoStore.CurrentSize)

    ' 分離ストレージ環境を解放
    isoStore.Dispose()
  End Sub

End Module
ディスク・クォータの容量を調べるサンプル・プログラム(上:C#、下:VB)

 このサンプル・プログラムをInternetゾーンで実行すると、筆者の環境では次のような出力が得られた。

全容量:512000Bytes
使用済み容量:0Bytes
空き容量:512000Bytes
サンプル・プログラムのInternetゾーンでの実行結果
Visual Studio 2005でプログラムをデバッグする際に、そのプログラムをInternetゾーンのセキュリティ環境で実行するには、プロジェクト・プロパティの[セキュリティ]タブで、[ClickOnce セキュリティ設定を有効にする]チェックボックスにチェックを入れ、[これは部分的に信頼するアプリケーションです]ラジオボタンを選択し、[アプリケーションがインストールされるゾーン]コンボボックスで「インターネット」を選んだうえで、プログラムをデバッグ実行すればよい。なお従来のVisual Studio .NET(2002/2003)にはこの機能はない(参考:「特集:ノータッチ・デプロイメント」の「インターネット・ゾーンでテストする方法」)。

 ちなみに、ディスク・クォータを超えて分離ストレージ環境にデータを書き込もうとすると、「クォータが完全に使用されています。 (HRESULT からの例外: 0x80131485)」というメッセージのIsolatedStorageException例外(System.IO.IsolatedStorage名前空間)が発生する。End of Article

カテゴリ:クラス・ライブラリ 処理対象:分離ストレージ
使用ライブラリ:IsolatedStorageFileクラス(System.IO.IsolatedStorage名前空間)
使用ライブラリ:IsolatedStorageFileStreamクラス(System.IO.IsolatedStorage名前空間)
関連TIPS:分離ストレージを活用するには?

この記事と関連性の高い別の.NET TIPS
すべての分離ストレージ環境をクリーンアップするには?
分離ストレージを活用するには?
分離ストレージでディレクトリを使うには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH