.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 XPとWindows 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") {
/*見つかったときの処理*/
}
}
最初は別の方向で調べてて、ちょっと時間を食ってしまいました。開発環境全部のマシンに入っているわけじゃないので...。