スポンサーリンク
定期的にプログラムを自動実行させるべく調べてみましたが、「自動起動するにはBIOSが対応していないと実現できない」という記事ばかり出てきました。
そこで私のPCのBIOS画面を見てみると、「POWER」や「Power On By RTC」、「Power Management」、「Wake On LAN」の言葉が見当たらなかったため、実現不可能と一度諦めました。
それからしばらくして、「私のPCは結構古かったから、新しいPCならBIOSが対応しているのでは?」と思い、急遽PCを購入したのですが、残念なことに新しいPCのBIOSも自動起動に対応していないようでした。
試行錯誤の結果、結局もともと持っていた古いPCで実現することができたので、今回その方法を紹介します。まずは、実現できたPCのBIOS設定をご覧下さい。
スポンサーリンク
実現方法
実現する方法は大きく分けて2つあります。
- BIOS設定を用いる方法
- タスクスケジューラを用いる方法
BIOS設定を用いる方法
今回はBIOSの設定での方法は割愛しますが、もし、その設定ができるPCをお探しの場合は下記3点をご参考頂ければと思います。
- BIOSの設定画面はマザーボードで決まります。PCのマザーボードの確認方法はいくつかありますが、コマンドプロンプトで「systeminfo」と入力し「システム製造元」、「システムモデル」で確認できます。
- 売り場のPCのBIOS設定を確認する際は、店員さんに相談してからにしましょう。理由は、BIOS設定を変更すると保証の対象から外れる場合もあるためです。BIOS画面は「スタートボタンを右クリックし、[設定]→[設定画面の左側の[回復]→[PCの起動をカスタマイズする]の[今すぐ再起動]→[トラブルシューティング]→[詳細オプション]→[UEFIファームウェアの設定]→[再起動]で起動することが一番簡単だと思います。
- 直接PCのメーカーに問い合わせするのも1つの方法です。メーカーによってはネットに公開されていることもあります。
タスクスケジューラを用いる方法
タスクスケジューラを用いる方法には次の2つあります。
- スリープ状態から起動→プログラム実行→スリープの繰り返し
- 休止状態から起動→プログラム実行→休止状態の繰り返し
1つ目の方法では上手くいかない場合があります。私のPCはスリープにするとPCからとても小さな音量で、モスキート音のような高い音が数秒間隔で聞こえてきます。休止状態ならそのような音も聞こえないので、2つ目の方法を積極的に利用することにしています。
なので、ここでは2つ目の方法を紹介します。
スポンサーリンク
準備(その1)
- HDDパスワードの設定をしている場合は解除する。
- スリープを復帰したら自動でサインインするようにする(手順:「設定→サインインオプション→サインインを求める」を「なし」にする。)
準備(その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
コントロールパネル→「電源オプション」→「コンピュータがスリープ状態になる時間を変更」→「詳細な電源設定の変更」を押し、表示される「電源オプション」画面の「スリープ」→「スリープ解除タイマーの許可」→「設定」を「有効」にする。もし、今後上手くいかなければ、「既定のプランの復元」を押してから「有効」にする。 - 電源オプションの変更2
コントロールパネルの「ディスプレイの電源を切る時間の指定」、「コンピュータがスリープ状態になる時間を変更」では「適用しない」を選択しておく。 - 標準は「休止状態」を選択できないようになっているので、選択できるようにする。
コントロールパネルの「電源ボタンの動作を選択する」で「現在利用可能ではない設定を変更します」をクリックし、「シャットダウン設定」のところにある「休止状態」のチェックボックスにチェックを入れ、選択できるようになったことを確認する。
準備(その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の設定からも実現できるかもしれません。
最後までお付き合いいただきありがとうございます!
この情報が誰かの役にたてれば幸いです。