その他

【BIOS設定不要】Windows PCの自動起動→プログラム実行→自動終了する方法[No33]

スポンサーリンク

定期的にプログラムを自動実行させるべく調べてみましたが、「自動起動するにはBIOSが対応していないと実現できない」という記事ばかり出てきました。

そこで私のPCのBIOS画面を見てみると、「POWER」や「Power On By RTC」、「Power Management」、「Wake On LAN」の言葉が見当たらなかったため、実現不可能と一度諦めました。

それからしばらくして、「私のPCは結構古かったから、新しいPCならBIOSが対応しているのでは?」と思い、急遽PCを購入したのですが、残念なことに新しいPCのBIOSも自動起動に対応していないようでした。

試行錯誤の結果、結局もともと持っていた古いPCで実現することができたので、今回その方法を紹介します。まずは、実現できたPCのBIOS設定をご覧下さい。

画像1:メニュー「Main」
画像2:メニュー「Advanced」
画像3:メニュー「Boot」
画像4:メニュー「Security」
画像5:メニュー「Save&Exit」

スポンサーリンク

実現方法

実現する方法は大きく分けて2つあります。

  1. BIOS設定を用いる方法
  2. タスクスケジューラを用いる方法

BIOS設定を用いる方法

今回はBIOSの設定での方法は割愛しますが、もし、その設定ができるPCをお探しの場合は下記3点をご参考頂ければと思います。

  • BIOSの設定画面はマザーボードで決まります。PCのマザーボードの確認方法はいくつかありますが、コマンドプロンプトで「systeminfo」と入力し「システム製造元」、「システムモデル」で確認できます。
  • 売り場のPCのBIOS設定を確認する際は、店員さんに相談してからにしましょう。理由は、BIOS設定を変更すると保証の対象から外れる場合もあるためです。BIOS画面は「スタートボタンを右クリックし、[設定]→[設定画面の左側の[回復]→[PCの起動をカスタマイズする]の[今すぐ再起動]→[トラブルシューティング]→[詳細オプション]→[UEFIファームウェアの設定]→[再起動]で起動することが一番簡単だと思います。
  • 直接PCのメーカーに問い合わせするのも1つの方法です。メーカーによってはネットに公開されていることもあります。

タスクスケジューラを用いる方法

タスクスケジューラを用いる方法には次の2つあります。

  1. スリープ状態から起動→プログラム実行→スリープの繰り返し
  2. 休止状態から起動→プログラム実行→休止状態の繰り返し

1つ目の方法では上手くいかない場合があります。私のPCはスリープにするとPCからとても小さな音量で、モスキート音のような高い音が数秒間隔で聞こえてきます。休止状態ならそのような音も聞こえないので、2つ目の方法を積極的に利用することにしています。

なので、ここでは2つ目の方法を紹介します。

スポンサーリンク

準備(その1)

  1. HDDパスワードの設定をしている場合は解除する。
  2. スリープを復帰したら自動でサインインするようにする(手順:「設定→サインインオプション→サインインを求める」を「なし」にする。)

準備(その2)

自動でユーザー名、パスワードを入力させ、ログオン画面をパスさせる。
(手順:「netplwiz」(windowsキー+r)で「ユーザーアカウント」画面を起動し、「ユーザーがこのコンピューターを使うには、ユーザー名とパスワードの入力が必要」のチェックボックスがあれば、そこから設定する。なければ「regedit」(windowsキー+r)で「レジストリエディター」画面を起動し、バックアップをエクスポートしてから、次のように設定する。

<キー>
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
<値>
 AutoAdminLogon(REG_SZ:文字列値):1(半角数字)
 DefaultUserName(REG_SZ:文字列値):XXX(自動ログオンするユーザー名):ユーザー名はCドライブのユーザーフォルダを確認した方が良い。
 DefaultPassword(REG_SZ:文字列値):XXX(自動ログオンするユーザーのパスワード)

※「ユーザーがこのコンピューターを使うには、ユーザー名とパスワードの入力が必要」のチェックボックスは、最近(2020年6月現在)のインストーラーでWindowsをインストールした場合、レジストリを変更しても表示されない。
-----

スポンサーリンク

準備(その3)

  1. 電源オプションの変更1
    コントロールパネル→「電源オプション」→「コンピュータがスリープ状態になる時間を変更」→「詳細な電源設定の変更」を押し、表示される「電源オプション」画面の「スリープ」→「スリープ解除タイマーの許可」→「設定」を「有効」にする。もし、今後上手くいかなければ、「既定のプランの復元」を押してから「有効」にする。
  2. 電源オプションの変更2
    コントロールパネルの「ディスプレイの電源を切る時間の指定」、「コンピュータがスリープ状態になる時間を変更」では「適用しない」を選択しておく。
  3. 標準は「休止状態」を選択できないようになっているので、選択できるようにする。
    コントロールパネルの「電源ボタンの動作を選択する」で「現在利用可能ではない設定を変更します」をクリックし、「シャットダウン設定」のところにある「休止状態」のチェックボックスにチェックを入れ、選択できるようになったことを確認する。

準備(その4)

コマンドプロンプトで「powercfg /a」を実行し休止状態が有効か確認し、ONになっていなければONにする。

ONの場合は次のようになっている。

offの場合は次のようになっている。

休止状態をONにするには「powercfg.exe /hibernate on」を実行する。

休止状態をOFFにするには「powercfg.exe /hibernate off」を実行する。

コマンド「powercfg /?」の実行でヘルプを確認できる。

参考サイト

休止状態を無効にして再び有効にする方法 - Windows Client

スポンサーリンク

準備(その5)

BIOSを起動し、BIOSの時間が現在の時間に合っているか確認する。※画像1:メニュー「Main」参照

準備&実行(その6)

任意の場所に次のバッチファイルを作成する。拡張子はbat。ここでは「ダウンロード」フォルダに置くことにする。


@echo on

set t=%time: =0%
set hh=%t:~0,2%
set mn=%t:~3,2%
set ss=%t:~6,2%

echo %time%>>%hh%%mn%%ss%.txt

スポンサーリンク

準備&実行(その7)

タスクスケジューラにタスクを登録する。


タスク名:Hibernate
全般:「ユーザーがログオンしている時のみ実行する」を選択する。
トリガー:試す場合は、設定作業が終わる時間から2分以降にした方が良い。
 ※2分以内だと何故かタスクが実行されません。
操作:プログラム/スクリプト:shutdown、開始(オプション)は/h
条件:「タスクを実行するためにスリープを解除する。」選択設定:そのまま


スポンサーリンク

タスク名:StartUp
全般:「ユーザーがログオンしている時のみ実行する」を選択する。
トリガー:試す場合は、Hibernateの時間から2分以降にした方が良い。
操作:プログラム/スクリプト:ダウンロードフォルダのsample.batのパス、開始(オプション)はダウンロードフォルダのパス
条件:「タスクを実行するためにスリープを解除する。」選択設定:そのまま

スポンサーリンク

結果

ダウンロードフォルダに「StartUp」で「実行時間に設定した時間がわかるファイル」ができていれば上手くいっています。

備考

BIOSの更新をすることで、もしかしたら、BIOSの設定からも実現できるかもしれません。

最後までお付き合いいただきありがとうございます!

この情報が誰かの役にたてれば幸いです。

スポンサーリンク

-その他