Windows : してログ

Windows Server 2003 でファイルサーバーを構築したはいいが、Vista や XP などから共有ファイルにアクセスすると異常にレスポンスが遅くなる問題に悩まされていた。普通に開く分には全く問題ないのだが、右クリックすると30秒近くレスポンスが返ってこない。何の罰ゲームだいったい。

で、今日見つけたのが、下記のサポート情報。
http://support.microsoft.com/kb/948496/ja

この KB948496 を適用したところ、サクっと右クリックメニューが表示されるようになった。同様の問題でお悩みの方は、ぜひお試しあれ。

※この記事は Y!ブログからの転載です
前から気になってはいたが、待てばなんとかなるから、放っておいた。

Windows 2003 Server で立てたファイルサーバーのファイルを右クリックしたり、フォルダを追加しようとすると、異常に待たされる。どの位かと言うと20〜30秒ぐらい応答しなくなる感じだ。二回目以降は大丈夫なのだが、しばらく放っておくとまた遅くなる。

MSにそれらしいパッチがあったので適用してみた。はて、効果はあるんかの?
http://support.microsoft.com/kb/947773/ja


※この記事は「Yahoo!ブログ - HDRp」からの転載です

起動すると特定のポートでサービスを開始するWindowsアプリケーションがあるのだが、これをある時間帯だけ稼働させたい、なんかいい方法は無いだろうか? という質問を受けたので、ちょっと方法を検討してみた。

定期的に作業させたい場合は、タスクスケジューラを使って開始時間と継続時間を設定すればいいのだが、そのアプリケーションは終了時に確認を求めるタイプなので、この方法ではうまく終了してくれない。

そこで思いついた方法は次の2つ

(1)起動しているアプリをリモートコントロールして終了させる

(2)利用ポートを遮断してアプリは起動しっぱなしとする

今回は、(1)の方法でうまく行きそうな目処が立ったので、こちらの方法を紹介します。

1.アプリケーションの起動はタスクスケジューラを普通に使って行う

2.終了については、下記のような WSH を作成してタスクスケジューラに登録する

 Set objShell = WScript.CreateObject("WScript.Shell")
 if objShell.AppActivate("Application Title") then
  WScript.Sleep 100
  objShell.SendKeys "%{F4}"
  WScript.Sleep 100
  objShell.SendKeys "{Y}"
 end if

 * AppActivate の引数は、終了したいアプリケーションのタイトルバーの内容を入れる
 * SendKeys は、アプリケーションに応じて変更(この場合は、Alt+F4 後、確認ダイアログに Y で応えている)

これでOKです。久しぶりに WSH なんて使いましたよ。


▽12/27追記
ログオンした状態で放っておく場合はこの方法でOKだが、そうでない場合はダメっぽい。隠しフラグの TASK_FLAG_INTERACTIVE でなんとかなるかと思ったがこれもダメ。今のところマシン自体を再起動させて道連れ終了させる他にいい手がなさそう。

▽12/27追記
SendKeysによるキーコード送信はログオフ中は無効になるようなので、この方法は使えないようです。別の方法でプロセスを終了させるようにしてみました。ただ、強制終了に近いと思いますので、アプリケーションによっては不具合が出てしまうかもしれません。

 for each Process in GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery ("select * from Win32_Process where Name='application.exe'")
  Process.terminate
 Next

※ application.exe のところは終了させたいアプリケーションに入れまえます

※この記事は「Yahoo!ブログ - HDRp」からの転載です