kkamegawaの購入記録

漫画、小説、映画や買ったものの記録をつらつらしていきます。昔は一部技術情報もありました…

.NETのProcessクラスでちょっとはまった。

 .NET Framework 1.1 SP1のProcessクラス(正確には、OSの実装かな?)ではまりました。覚え書きとして書いておきます。

 現在のプロセス一覧を取得して、自分が必要としているプロセスが生きているかどうか、判定するというロジックを組んでいました。ところが、こいつがWindows Server 2003(SP無し)では期待通り動作する物の、Windows 2000 Server SP4および、Windows XP SP1では(1)の判定が成功ませんでした。タスクマネージャで見ると該当プロセスは"HOGEHOGE.exe"と表示されています。

Process [] localAll = Process.GetProcesses();

for(int i = 0;i < localAll.Length;i++) {

if(localAll[i].ProcessName.Substring(0, 8) == "HOGEHOGE") { //(1)

/*見つかったときの処理*/

}

}

 Windows Server 2003では、タスクマネージャに表示されているとおり、"HOGEHOGE"という大文字で取得できたのですが、Windows XPWindows 2000 Serverでは"hogehoge"と小文字で返却されたためです。よって、対応コードはこう(ToLower()を使って小文字のhogehogeとの比較でもOK)。

Process [] localAll = Process.GetProcesses();

for(int i = 0;i < localAll.Length;i++) {

if(localAll[i].ProcessName.Substring(0, 8).ToUpper() == "HOGEHOGE") {

/*見つかったときの処理*/

}

}

 最初は別の方向で調べてて、ちょっと時間を食ってしまいました。開発環境全部のマシンに入っているわけじゃないので...。