特集
ノータッチ・デプロイメント
一色 政彦
2003/08/12 |
|
|
ノータッチ・デプロイメントのプログラミング(1)
ノータッチ・デプロイメントで実行するプログラムは、インターネット・ゾーンのコード・アクセス・セキュリティでアクセス許可された機能しか使うことができない。ここでは、インターネット・ゾーンでアクセス許可された機能を活用したプログラミングについて概説しよう。サンプル・プログラムのソース・コードは下記のリンクからダウンロードできる。
ただし、Visual Studio .NET 2002では、本稿の冒頭でも紹介したように、.NET Framework 1.0 SP1/SP2が導入されている場合、デフォルト設定のままでは動作しないので、注意が必要である。
■安全なウィンドウのコーディング
ノータッチ・デプロイメントはWindowsフォームを使ったWebアプリケーションなので、基本的なWindowsフォームのウィンドウ機能が利用可能だ。インターネット・ゾーンのコード・アクセス・セキュリティでは、ウィンドウに対し「SafeTopLevelWindows(安全なトップ・レベル・ウィドウ)」の制限がかけられる。
このSafeTopLevelWindowsでは、ControlBoxプロパティ(タイトルバー右上の最大化、最小化ボタン)が制限され、またShowInTaskbarプロパティ(フォームのタスクバー表示)が制限される。これにより、バックグラウンドで悪意のあるプログラムが実行されるのを防ぎ、またシステムのログオン画面やデスクトップに偽装してパスワードを盗むなどのなりすまし攻撃を防止できる。
マイコンピュータ・ゾーンの場合 |
|
インターネット・ゾーンの場合 |
|
SafeTopLevelWindowsのセキュリティ制限 |
インターネット・ゾーンでは、セキュリティ制限によりウィンドウの一部が制限される。 |
|
|
マイコンピュータ・ゾーンでは、コントロール・ボックスの最大、最小ボタンを隠すことができるが、インターネット・ゾーンでは隠すことができない。 |
|
|
同様に、インターネット・ゾーンでは、タスクバーのアプリケーション表示を無効にできない。 |
|
SafeTopLevelWindowsで、処理制限される機能は次のとおりだ。この情報は.NET Framework 1.1 SDKの「Windows フォームのセキュリティに関するその他の考慮事項(ms-help://MS.NETFrameworkSDKv1.1.JA/cpguidenf/html
/cpconAdditionalSecurityConsiderationsInWindowsForms.htm)」などで参照することができる。
アプリケーション |
・SafeTopLevelCaptionFormatプロパティ(設定) |
Form |
・ActiveFormプロパティ(取得)、MdiParentプロパティ(取得) |
・ControlBoxプロパティ(設定)、ShowInTaskbarプロパティ(設定)、TopMostプロパティ(設定) |
・Opacityプロパティ(50%より小さい値の設定) |
・WindowStateプロパティ(プログラムによるFormWindowState.Minimizedへの設定) |
・Activateメソッド |
・FormBorderStyle列挙体(None、FixedToolWindow、SizableToolWindow) |
コントロール |
・Parentプロパティ(取得)
|
・Regionプロパティ(設定)
|
・FindFormメソッド、Focusメソッド、FromChildHandleメソッド、FromHandleメソッド、PreProcessMessageメソッド、ReflectMessageメソッド、SetTopLevelメソッド
|
・GetChildAtPointメソッド(本メソッドの戻り値のコントロールが、メソッド呼び出し元コントロールの子ではない場合) |
DataGrid |
・ProcessTabKeyメソッド |
Cursor |
・Clipプロパティ(設定)
|
・Hideメソッド |
コンテナ |
・コントロール内でのフォーカス移動 |
NotifyIcon |
・完全に制限される |
|
SafeTopLevelWindowsのセキュリティにより制限される機能 |
■ファイルを扱うテクニック
次にファイルの操作について見てみよう。インターネット・ゾーンでのファイルI/O(入出力)は完全に制限されている。よって、ファイルにデータを書き込んだり、ファイルからデータを読み込んだりすることは不可能である。ただし、ファイル読み込みに関しては1つだけ抜け道がある。それは、「ファイルを開く」コモン・ダイアログを使ったファイル読み込みだ。次のコードは、「ファイルを開く」コモン・ダイアログを使ったファイル読み込みのサンプル・コードである。
' Visual Basic .NET
Dim dlg As New OpenFileDialog()
dlg.Filter = "テキスト ファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*"
If dlg.ShowDialog() = DialogResult.OK Then
Dim filestream As Stream = dlg.OpenFile()
Dim reader As New StreamReader(filestream)
Dim strtemp As String = reader.ReadLine()
reader.Close()
filestream.Close()
End If
|
|
「ファイルを開く」コモン・ダイアログを利用したファイル読み込みのサンプル・プログラム(Visual Basic .NET版) |
// C#
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "テキスト ファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*";
if (dlg.ShowDialog() == DialogResult.OK)
{
Stream filestream = dlg.OpenFile();
StreamReader reader = new StreamReader(filestream);
string strtemp = reader.ReadLine();
reader.Close();
filestream.Close();
}
|
|
「ファイルを開く」コモン・ダイアログを利用したファイル読み込みのサンプル・プログラム(C#版) |
Insider.NET 記事ランキング
本日
月間