毎度勤怠ネタ。バックグラウンドでごちゃごちゃやってるからか、作り方が悪いのか、何が遅いのかわかりませんが、とにかく画面遷移が遅い。とにかく問題はPCが古いっていうこと。CPUもメモリもギリギリの状態なので、このPCで多少でも早くするためには常駐ソフトを減らすこと。ウイルス対策ソフトに対しては起動後10分してから立ち上げることで対処したのですが、他のソフトについても、タスクマネージャー(タスクバーを右クリックして立ち上げるか、Ctrl+Alt+Delete同時押しで立ち上げる)や管理ツールのサービスで不要だと思えるものは起動させないようにする必要がありますが。それ以外に、別のアプローチとして実行優先度を上げるという方法も調べてみました。
手動でやるにはタスクマネージャーから優先度を変えたいアプリを右クリックしてプロセスを表示を選ぶ。プロセス画面に変わったら再度右クリックして優先度の設定で選ぶ(リアルタイムはやりすぎらしいので、通常以上か高にする)という手順でできるそうですhttp://premium.nikkeibp.co.jp/win2000/tips/others/index13.shtml
ですが、
やはり自動でやりたい。そこで調べたところ、Microsoftのページにありました。スクリプトを使用してプロセスの優先度を下げる方法はありますかです。以下にそれをコピペ
===================================================================
スクリプトを使用してプロセスの優先度を下げる方法はありますか
Scripting Guy さん、よろしくお願いします。スクリプトを使用してプロセスの優先度を下げる方法はありますか。
-- HS
A
HSさん、こんにちは。多くの方がご存知のように、すべてのプロセスは等しく作られていません。代わりに、プロセスには優先度の値が割り当てられます。優先度
の高いプロセスは、優先度の低いプロセスよりも頻繁に実行されるため、より速く実行されているように見えます。たとえば、キーボードとマウスはどちらも、
システム
プロセスにおいて非常に高い優先度で実行されます。そうでなければ、キーボードでキー入力したり、マウスを動かしたりするたびに遅延を感じます。
一
般に、ほとんどのプロセスは "通常"
の優先度で実行されます。速すぎることも、遅すぎることもありません。それで問題なく機能しているように思えます。しかし、特定のプロセスの優先度を変更
したい場合があるかもしれません。たとえば、深夜にプロセス X
の優先度を上げて、プロセスで実行されているタスクがより早く完了するようにできます。反対に、プロセス X を日中に実行している場合は、優先度を
"下げる"
ことで、コンピュータ上で実行されている他のタスクを妨げないようにできます。以上は簡単な概要で、プロセスの優先度の変更を始める前に検討する点は他に
もあります。しかし、少なくとも何の話をしているのかはおわかりいただけましたね。
それでは、実際に "プロセスの優先度を変更する" と仮定しましょう。優先度は、タスクマネージャを使用して簡単に変更できます。プロセスを右クリックし、[優先度の設定] を選択して、使用可能なオプションのいずれかを設定するだけです。

すばらしいですね。しかし、スクリプトを使用して同じことができるでしょうか。
Windows
XP または Windows Server 2003 を実行していれば、答えはイエスです (申し訳ありませんが、Windows 2000
ユーザーの場合はノーです)。これは、上記のバージョンの Windows にある WMI クラスの Win32_Process
には、SetPriority
という名前のメソッドが含まれ、このメソッドを使用して実行中のプロセスの優先度を変更できるためです。たとえば、Notepad.exe (メモ帳)
の優先度を通常以下に設定するスクリプトを次に示します。
Const BELOW_NORMAL = 16384
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcesses
objProcess.SetPriority(BELOW_NORMAL)
Next
このスクリプトでは、まず BELOW_NORMAL という名前の定数を定義し、値を 16384
に設定します。ご想像のとおり、後でこの定数を使用してメモ帳の優先度を通常以下に変更します。他の値を使用して、プロセスに "異なる"
優先度を割り当てることはできるでしょうか。もちろん、できます。
| 優先度クラス |
値 |
| 通常 |
32 |
| 低 |
64 |
| リアルタイム |
128 |
| 高 |
256 |
| 通常以下 |
16384 |
| 通常以上 |
32768 |
スクリプトでは、定数を作成したら WMI サービスに接続し、次のコード行を使用して Notepad.exe という名前のすべてのプロセスのコレクションを取得します。
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Notepad.exe'")
コレクションが返されたら、For Each ループを使用して Notepad.exe のすべてのインスタンスを順に処理します
(このスクリプトでは、このようなインスタンスが 1
つしかないか、またはインスタンスが複数ある場合はすべてを通常以下の優先度に設定すると仮定しています)。ループの内部で、SetPriority
メソッドを呼び出し、定数 BELOW_NORMAL を単一のパラメータとして渡します。
objProcess.SetPriority(BELOW_NORMAL)
Notepad.exe の優先度を (スクリプトまたはタスク マネージャを使用して) 確認すると、優先度が通常以下に設定されていることがわかります。
こ
こで、注意する点が 1 つあります。このスクリプトをファイル サーバーなどで実際に実行する前に、テスト
コンピュータでさまざまな優先度を試してみることをお勧めします。メモ帳の優先度を通常以下に変更しても、おそらく問題はありません。しかし、データベー
ス
アプリケーションの優先度を通常以下に変更すると、ユーザーにとって問題が発生する可能性があります。同様に、どのプロセスについても優先度をリアルタイ
ムに設定することはお勧めしません。リアルタイムに設定した場合、そのプロセスによってすべてのシステム リソースが消費され、主要なオペレーティング
システム機能を含む他の機能の実行が妨げられる可能性が高くなります。Scripting Guys から、役立つヒントをお伝えしました。
=====================================================================
ということらしいです。
窓の杜やVectorでも優先度を切り替えられるソフトがあるようなので、そういうのを入れてもいいかもしれませんね。
どのぐらい変わるのか明日試したいと思います(あんまり期待せずに)。メーカーが使い方を実演したときは早かったんで、まさかそのときは、こういう細かい工夫をしないといけないとは思ってもいませんでした。根本的にスペックが足りないってわかってるのに、先送りにしてますね。今使っているPCを壊してしまえばニューマッシーンが来るなら壊すことも考えますが、下手をすると倉庫で眠っている実用に耐えないようなのが来るかもしれないので、怖くて壊せません。
=================>>>>>>>>
で、やってみました。とりあえず、タスクマネージャーから変えてみようかなぁと。ですが、、、拒否されます。とにかく拒否されます。ユーザーが自分じゃないからでしょうね。再度調べます!!
追加URL
http://www.losttechnology.jp/Tips/priority.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/112changepriority/112changepriority_01.html
http://www.micnet.ne.jp/k-sawada/contents/win/winxp.html
最近のコメント