メタ文字のエスケープ

sqlインジェクション対策の一つのメタ文字のエスケープ処理。ローカルで利用するwindowsアプリケーションなので、インターネット上のwebアプリのように攻撃されることはないけれど、操作している上でメタ文字を入力してしまうということが起こりうるため一応対策。

“‘”(シングルクォート)をエスケープ処理する。入力文字列中にシングルクォートが存在すれば、その前にもう一個シングルクォートを挿入するようにコーディングする。シングルクォートを見つける手段は正規表現を使うことにする。

サンプルコード

Imports System.Text.RegularExpressions

‘文字列中にシングルクォートが存在すれば、シングルクォート2個に置き換える
Dim inputedValue As String = Regex.Replace(Me.textBox1.text, “‘”, “””)

windowsアプリケーションに最新バージョン確認の機能を追加する

現在使用しているwindowsアプリケーションのバージョンが、公開されている最新バージョンであるかどうかを確認するための機能を追加してみる。どういう実装にするのが最善かまだ見えていないけれど、単純に考えるなら最新バージョンの情報があるファイルをサイトからダウンロードして、そのファイルにあるバージョン情報を読み取り、現在のアプリケーションのバージョンと比較をするというのが簡単に実現できそうだ。

この機能を実現するにはインターネットにアクセスして対象のファイルをダウンロードするという方法をとらなければならない。アプリケーションを公開する側では、公開時にリリースするソフトと一緒にそのバージョンが記されたファイル(テキストファイルなど)をするという準備が必要になる。ソフト側では最新バージョンのチェックを行ったらそのバージョンが記されたファイルをダウンロードするという手順になる。筋道としてはこんな感じだろうか。

注意点は、

  • インターネットに接続できない場合の対処
  • 対象のファイルが存在しなかった場合の対処

・・・ということを想定して実装してテストを繰り返せば致命的なエラーにはならない、かな。

サンプルコード

MonthCalendarの表示がxpとvistaでサイズが異なる

visual studio 2005のwindowsアプリケーションを作成する場合に使うコントロールの一つにMonthCalendarというのがある。これをフォーム内に配置して表示確認を行ったところ、どうもxpとvistaではデザインとサイズが大幅に異なるようになっている。しかもサイズの変更ができず、どちらかに合わせることもできない。

xpとvistaの両方で同じように表示する方法は一つあって、コンパイル時の設定でxpのスタイルを無効に設定することで一応、同じように表示はすることができる。ただこれはデザインがクラシックスタイルになってしまってせっかくのvistaの美しいインターフェースが使えなくなってしまう。

フォームに埋め込み式でMonthCalendarを使う場合にはサイズの問題でxpとvistaに両対応させることは難しい。困った。