KB2931368を入れると、勝手にシャットダウンする

作業中に椅子を立って、何かをして戻ってくると、コンピュータが勝手にシャットダウンされていて、作業内容が失われているということが何度かあった。そういうことは以前なかったので、一度数日前の状態へコンピュータを復元した。

それでしばらく使用していたが、また同じことになった。

で、それはどうやら、Windows Updateをしたときのタイミングだった。自分はWindows Updateは、通知だけしてもらって、勝手にインストールする設定にはしていない。その時のUpdate内容はほとんどがOffice関係の物ばかりで、システムに関係すると思われる更新は

 

Windows 7、Vista、Server 2008、Server 2008 R2 x64 用 Microsoft .NET Framework 4.5 および 4.5.1 の セキュリティ更新プログラム (KB2931368)

 

だけだった。

この更新を外して以降、勝手にシャットダウンするという現象は起きていない。

conduit searchの削除

顧客のブラウザが検索画面乗っ取りプログラムにおかされてしまった。

ブラウザのホームページがtroviなんとかというサイトになってしまって、元に戻すことができない。

あまり検索してもちゃんとした削除の仕方が書いてないようなので、今日やったことを振り返ってみます。記録を取っていないので、ざっとでごめんなさい。

 

まず考えたことは、ブラウザのアドオンとして何か余分なものが入っていないかどうかである。これはIEの場合、ブラウザのメニュー(歯車のマーク)か、コントロールパネルから、インターネットオプションを起動する。このプログラムタブのアドオンの管理に、見慣れないプログラムがないかどうかを探してみる。

 

すると、検索のアドオンとしてConduit searchというのが入っている。

 

そこで、レジストリエディターを起動してConduit を検索してみる。

これは、ウィンドウズのスタートボタンをクリックして、「プログラムとファイルの検索」に「regedit」と書いてENTERをするのである。レジストリは安易にいじるとシステムがおかしくなるけれども、ウィルスや不正なプログラムは必ずここに必要な情報を書き込むのだ。

Conduitを検索してみると、4つぐらいヒットした。Program Filesの中のSearchProtectというフォルダにインストールされたものがこのプログラムの実体である。では、SearchProtectフォルダを削除してみようとすると、他のプログラムが使用中なので削除できませんとでる。

またHKEY_LECAL_MACHINE\software\Microsoft\Windows\currentversion\runなどにプログラムを指定することによって、起動時にプログラムを実行するようにできる。ところがこうした起動時に動くプログラムを調べても、SearchProtectの中のプログラムは指定されていない。どうやって起動しているのだろう?

実は
HKEY_LOCAL_MACHINE\SYSTEM\CONTROLSET001
HKEY_LOCAL_MACHINE\SYSTEM\CONTROLSET002
HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET
の中のserviceにSearchProtectのサービスがあった。だから実はこれは管理ツールにあるサービスだったのだ。サービス、というのは、ユーザがログインをしなくても、ウィンドウズがどのユーザのプログラムからでも使えるように、裏側でずっと動かし続けているプログラムのことです。

 

レジストリを見ると、アンインストールのパスも書いてある。ひょっとしたらこれを実行したらきれいになくなるのかもしれない。しかし、本当にこれが悪質なウィルスだとすると、これを実行することによってさらに悪いことが起こってしまわないとも限らない。

本当は多分管理ツールの「サービス」で該当のサービスを無効にしてしまえば削除できたのかもしれない。これもプログラムフォルダとは違う名前のサービスとして登録されていた。

しかし、今回はWindowsをセーフモードで起動してフォルダを削除し、関連のレジストリを消した。

 

すごくざっとでごめんなさい。今度誰かやったら補完してね。

今はレジストリは触らないようにMicrosoftさんも言っているけれども、悪意あるプログラムが悪さをするとき、必ずどこかからそのプログラムが勝手に呼び出されるように仕掛けをしているのである。内容を安易に書き換えたりするのは難しくても、「はは~ん、どうやらここにあるな。」という見当をつけるためには、ある程度中身を知っておくほうがいいと私は思う。Windows NT4.0ぐらいの時代は、コンピュータはある程度よく知っている人が触るのだから、レジストリぐらい触れて当たり前という前提があった。そして、今でも基本的な構造はそんなに変わっていないと思う。

ファイルの整理

ファイルの容量がやけにでかい人がいる。ある程度オフィスではいろいろな人がいるのだから、仕方がないことだとは思う。

自分はこういうことにしている。

  1. デスクトップにはファイルを保存しない。最後には自分でも保存したかどうかわからなくなる。
  2. フォルダには8ケタで日付を入れる。
  3. 画像は適切な大きさにする。普通にデジカメで撮った画像は縦横が4000ピクセルぐらいある。JPEGでも数メガバイトということになる。画面で表示するということなら、800×600とか、640×480ぐらいで十分だ。すると200~300kbぐらいにまでは落とせる。

 

IISとApacheでのPHPの挙動

自分は開発環境がIISで、phpプログラムもIISで動かす。

ところが、開発時問題ないと思っていて、レンタルサーバにあげるとうまく動作しないということが起きる。

 

「FPDF error: Some data has already been output, can’t send PDF file」というのでずいぶん困った。IISでは何も問題ない。そして、新しく作ったプログラムのもとになるプログラムは普通に動いている。何が違うのか。

 

実は、phpファイルをutf-8で保存するのだけれど、その時に文頭にutfの識別文字0xef 0xbb 0xbfが入っているかどうかだけの違いだった。utf-8(no signature)で保存すると正常に動いた。

同じようなことが何回かある。

 

例1)

<php?で始まる文頭にスペースや改行があるかどうか。スペースや改行があってもIISでは問題なく動く。ところがapacheでは動かない。

例2)

デバッグのためにecho文を入れていることがある。これでIISで動くのに、Apacheで動かないケースがある。

 

いずれの場合もpdfだったり、csvだったり、リダイレクトだったり、通常のhtml以外のレスポンスするプログラムだ。本番環境のレンタルサーバでは、pdfやリダイレクトのレスポンスがある前にhtmlのレスポンスがあったものとして、エラーになるのに、IISではエラーにならないのです。

どちらがいいんでしょうね。IISはバッファのレスポンスを返す前に、他のレスポンスを優先するような、何らかの判断が働いていると考えられる。そして、実はこれは案外便利なんだよね。

Accessで行くかSQL Serverにするかは、管理の問題

Accessデータベースと比較できるものは沢山はない。ファイルメーカーぐらいだろう。

データテーブルを管理できて、それを条件に合わせて抽出し、表示や入力するためのフォームやレポートを一つのソフトの中で作ることができる。とても便利だ。複雑な入力システムを作ることもできる。 続きを読む