Windows NT系OS起動時の、自動実行(レジストリ・Startupフォルダ)

文書作成日 2003/1/26 最終更新日 2004/2/28
 Windowsを起動するとき、様々なサービスやアプリケーションが自動的に起動します。
 これらは起動エントリとして登録されています。
 HKLMは[HKEY_LOCAL_MACHINE]です。
 HKCUは[HKEY_CURRENT_USER]を指します。
 [HKEY_LOCAL_MACHINE\System\ControlSet001]などは、バックアップです。
 [HKEY_CURRENT_USER]は、[HKEY_USERS]の中のユーザーごとの設定を一時的に利用したものです。

 このページはWindows 2000とWindows XP Home Editionを利用して作成・実験しました。

レジストリに登録(\CurrentVersion\Run)

 レジストリに登録して起動させるために利用される場所は、  [HKCU\Software\Microsoft\Windows\CurrentVersion\Run]と[HKLM\Software\Microsoft\Windows\CurrentVersion\Run]です。
 わたしのWindows 2000では前者にはInternat.exe、後者にはIME関連やアンチウイルスソフト(Norton)などが登録されていました。

 Runキーだけではなく、RunServices、RunOnce(一度だけ実行されて削除されます)、RunServicesOnce(これも一度だけ実行されて削除されます)、RunOnceEx(使い方がよくわかりません・・・)などのキーも利用されます。

 Windows 9x系ではさらに、[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]と[HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]も利用されます。


ちょっと実験♪ファイル名をフルパスで指定しないで登録してみます

 [HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]に新規で文字列を作成し、値を[Notepad.exe]と入力しました。同じように、適当なディレクトリに作成したテキストファイル1.txtを登録します。
 OS起動時に両方とも起動し、テキストファイルが2つ開きました。ファイルの場所をフルパスで指定しなくても、自動的に検索してくれたみたいです。

[フルパスで指定しないときの注意]
 ファイルの名前をtext.txtにして、フルパスではなくファイル名のみを登録してテストしましたけど。
、ファイルがみつからないと表示が出て起動してくれないこともあるみたいです。


 実験につかったテキストファイルは、それぞれこのような場所に作成してみました。
 C:\
 C:\Winodws\
 C:\Winodws\System32\
 デスクトップ

 [Notepad.exe]と複数の[テキストファイルの名前]を登録したとき、一部のファイルが「ファイルが見つからない」と表示がでて、開かれないことがありました。
 理由はよくわかりません・・・


\Windows NT?

 [HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run]も利用されるというTIPSを、某有名FAQ集で見つけて、とっても気になりました。
 そこで再度実験♪(なにごとも実際に試すのは、Tef-Room的なルールです)。

 テキストファイルを作成して、それを下表のレジストリに登録しました。
 (Windows 2000SP3には(2)と(4)のRunキーは無かったので、新規に作成しました。WindowsXP HomeEditionでもこのRUNというキーは、レジストリのこの場所にはありませんでした。)
  1. [HKCU\Software\Microsoft\Windows\CurrentVersion\Run]
    • 起動しました
  2. [HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run]
    • 起動しません
  3. [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
    • 起動しました
  4. [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\Run]
    • 起動しません

 [HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run]説は、再現できませんでした。なにかの間違いだったのでしょう。

スタートアップフォルダ

 ここに登録されたものは、ユーザーがログオンしたあとに起動します。
  1. [\Documents and Settings\ユーザー名\スタート メニュー\プログラム\スタートアップ]
    • ログオンするユーザーごとに固有の設定をしたいときに利用します。
    • システム情報(msinfo32)では[スタートアップ]と表示されます
    • システム構成ユーティリティ(msconfig)では[Startup]と表示されます。
  2. [\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ]
    • どのユーザーでログオンしたときでも起動させたいものを登録します。
    • システム情報(msinfo32)では[共通スタートアップ]と表示されます
    • システム構成ユーティリティ(msconfig)では[Common Startup]と表示されます。
    • Microsoft Office.lnkやAdobe Gamma Loader.exe.lnkなどが登録されます。
  3. [\Documents and Settings\Default User\スタート メニュー\プログラム\スタートアップ]
    • ここに登録するとき、新しく作成されたユーザーアカウントで、自動的にスタートアップ項目が作成されます。
  4. [\Documents and Settings\All Users/ユーザー名/Default User\スタート メニュー]
    • 自動起動のためのものではなく、スタートメニューの表示のための場所です。
    • ここにショートカットを登録しても、ログオンしたときに自動的に起動はしません。
    • Windows Update.lnkが入っています。

 ウイルスやスパイウェアに感染したひとがシステムの復元機能を使っても、解決しないことがありますけど。
 スタートアップフォルダに配置されたファイルは、システムの復元機能をつかって以前の状態に戻したつもりでも、削除されません。


ちょっと実験(WindowsXP SP2)♪

 6つのフォルダに、それぞれテキストファイルを作成してみました。環境はWindowsXP SP2です。

  1. C:\Documents and Settings\ユーザー名\スタート メニュー\プログラム\スタートアップ\1.txt
  2. C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\2.txt
  3. C:\Documents and Settings\Default User\スタート メニュー\プログラム\スタートアップ\3.txt
  4. C:\Documents and Settings\ユーザー名\スタート メニュー\4.txt
  5. C:\Documents and Settings\All Users\スタート メニュー\5.txt
  6. C:\Documents and Settings\Default User\スタート メニュー\6.txt

 OSを起動してログオンしてみます。1.txt、2.txtの2つのファイルが起動後に開きました。

 スタートメニューには4.txt、5.txtが登録されました。



 [スタート] - [ファイル名を指定して実行] - [msinfo32]でシステム情報を起動します。
 [システムの概要] - [ソフトウェア環境] - [スタートアッププログラム]を開きます。





 [スタート] - [ファイル名を指定して実行] - [msconfig]からシステム構成ユーティリティを起動して、[スタートアップ]タブを開きます。





サービスについて

 デバイスサービス(デバイスドライバプロトコルに準拠したドライバ)とサービスアプリケーション(一般にサービスと呼ばれるのはこれです)の2つに分けられます。
 パソコンを起動してすぐ、ログオン前に実行されます。
 レジストリの[HKLM\system\CurrentControlSet\Services\]に登録されています。


Autoexec.bat、Win.ini、System.iniファイル

 まれにウイルスが自分を起動時に実行させる目的で、これらを利用します。Windows 9x系OSでは有効ですけど、Windows 2000やXPでは関係がないみたいです。


タスクスケジューラー

 アプリケーションの自動アップデートなどに利用されます。ログオン前に実行されるようです。
 作業の途中で勝手にアプリケーションが起動して泣いた経験、ありませんか?

 システム起動時やログオン時を選択すれば、起動直後に任意のアプリケーションを起動させることができます。
 [スタート] - [プログラム] - [アクセサリ] - [システムツール] - [タスク]から確認しなければ確認できません。

 案外気づかないひとが多いようですけど。
 XPなどのシステム構成ユーティリティ(msconfig)では、ここで設定された項目は表示されません

 この項目にはアンチウイルスソフトの定期的なスキャンのスケジュールなどが登録されます。


スタートアップスクリプト、ログオンスクリプト

 後日紹介します・・・


トップページWindowsのヒント・TIPS・テクニックとセキュリティ♪>Windows NT系OS起動時の、自動実行(レジストリ・Startupフォルダ)

ご意見はフォームメールへ
This contents was written by tef_tef.