導入後
インストール時に HDD 全体を事前ウィルススキャンしておいて、インストール後にさらに システムの完全スキャン を実行しないとシステム状態が危険な状態だと警告するのは、ちょっと二度手間な気がする。まぁ、インストール前のスキャンは最新のウィルスパターン情報を元にした検索ではないし、メールの添付ファイルや圧縮ファイルの中身までは見ていないようなので、そういうものだという認識でよいのだろう。
最初の問題は、localhost で動かしていた IIS の提供する Web にアクセスできなくなったことだが、これは自分自身からのアクセスを許可したのですぐに問題としては解決した。次の問題は、同 IIS 上で利用できるように設定してあった Perl による CGI プログラムが動作していないような状態になってしまったこと。
この問題は完全には解決していないし、結構な時間を費やしてしまった。
まず、最初に確認したのは perl.exe が起動しているかどうか? これはブラウザから CGI をアクセスしてみてタスクマネージャを見れば簡単にわかる……ちゃんと起動している。
この時、perl.exe の利用している CPU% やメモリは非常に小さく、これは perl.exe が起動したてに近い状態であることが予測できた。ここから「NIS の設定が厳しくて、perl.exe が何か実行しようとして確認のダイアログなどを出しているのではないか?」ということを思いついた。IIS はサービスとして実行されているので、ウィンドウステーションと関連付けされておらず、ユーザとの対話能力がないため、このダイアログに対して誰も応答することができなくなっているのではないか、と。*1
この問題を解決するのは非常に面倒になる可能性があるのだが、確認するだけなら簡単である。IIS とその子プロセスの perl.exe に対して現在ログオンしているユーザのデスクトップウィンドウステーションに対する対話を許可すればいい。……ぽちっとな……、特にダイアログなどを表示しているわけではないようだ。
ここで、いまさらながら確認しなければならないことがあることに気がついた。そう、果たして perl.exe はきちんと動作しているんだろうか?
非常に単純なことだが、Perl で書かれた CGI プログラムが動作するためには、当然ながら perl そのものがキチンと動作していることが前提である。あまりにも当然のことではあるが、これを確認しておくのは絶対に必要だ。
C:\HOME> perl -e "print qq{Hello, World!\n}" Hello, World
とりあえず、ワールドさんに挨拶を打診してみる、特に問題はないようだ。
ちょっとしたひらめきで、すこし書き加えてみることにする。
C:\HOME> perl -MFile::Spec -e "print qq{Hello, World\n}" Hello, World
結果は正常である…。しかし、恐ろしいことにこれだけの実行に1分半もの時間がかかった。普段利用している自作の HTML 整形スクリプトは、
#!perl use Getopt::Long qw/:config permute/; use HTML::Parser; use File::Spec;
のような書き出しであるが、
C:\HOME> perl -e "print scalar localtime" xxxxxx C:\HOME> perl -MGetopt::Long -MHTML::Parser -MFile::Spec -e "print scalar localtime" yyyyyy
と、連続して実行してみると、xxxxxx と yyyyyy で実に3分もの時間が経過していた。これは明らかに異常事態ではないだろうか?
*1:ふつーの人はウィンドウステーションがどうたらとかを考えたりはしないよな…