Windows環境には、古くから「システムの復元」という機能が搭載されており、この機能を利用していれば、何らかの理由でWindowsの動作がおかしくなった場合に、復元ポイントからシステムを以前の状態に簡単に戻すことができ、この機能に助けられた方もいらっしゃるのではないでしょうか。
ですが、Windows 10や11では、この機能(Windows 10以降では「システムの保護」という名称です)は、ほとんどの場合デフォルトで無効化されています。
そこでここではWindows 10を例に「システムの保護」機能を有効化する方法や、復元ポイントの作成/削除、復元ポイントからのシステムを復元する方法として、設定画面から行う方法と、コマンドで行う方法を紹介します。
目次
システムの保護とは
Windows 10や11の「システムの保護」機能は、アプリケーションやデバイスドライバー、更新プログラムのインストールといったシステムに変更が加えられるときに、事前にシステムの状態を「復元ポイント」として保存しておき、変更によってシステムに何らかのトラブルが発生したときに、システムの状態簡単に元の状態に戻せる機能です。
復元ポイントは、システムの保護機能が有効であれば、アプリケーションやデバイスドライバーをインストールするときや、更新プログラムをインストールするとき、一定期間(1週間)復元ポイントが作成されていないときに自動的に作成されており、任意のタイミングで手動で作成することもできます。
復元ポイントにはその時点のドライブ全体の情報が記録されており、システムの復元で利用されるだけでなく、エクスプローラーの「以前のバージョンの復元」機能を使って、ドライブ上の任意のフォルダーやファイルを復元する用途でも利用されます。
なお、システムの保護で作成される復元ポイントは、他のバックアップ機能とは異なり、現在稼働しているシステム上でしか利用できません。また、復元ポイントからシステムを復元した場合、復元後に一部のアプリケーションが正常に動作しなくなるといった、予期しないトラブルを引き起こすことがある点に注意が必要です。
システムの保護の有効化/無効化
「システムの保護」を有効化/無効化するときは、Windowsの「設定」アプリから「システム」>「詳細情報」画面を開き「関連設定」にある「システムの保護」をクリックします。
「システムのプロパティ」画面の「システム保護」タブが表示されるので、保護するドライブを選択してから「構成」をクリックします。
ドライブの設定画面が表示されるので「システムの保護を有効にする」を選択してから「ディスク領域の使用量」をスライダーで調整して「OK」をクリックします。(逆に、無効化したいときは「システムの保護を無効にする」を選択して「OK」をクリックします。)
なお「最大使用量」は、おおむね10GB程度を割り当てます。
以上で、選択したドライブのシステム保護が有効(無効)になります。
他のドライブも保護(無効)したいときは、上と同じ手順を繰り返します。
コマンドで設定するときは
コマンドで「システムの保護」を有効化するときは、管理者権限でPowerShellを起動して、以下のようにコマンドを実行します。
PS C:\> Enable-ComputerRestore -Drive C:\
複数のドライブで有効化する場合は、ドライブをカンマ区切りで指定します。
PS C:\> Enable-ComputerRestore -Drive C:\,D:\
ディスク領域の最大使用量を設定するときは、対象のドライブごとに以下のようにコマンドを実行します。
以下のコマンドでは、Cドライブの最大使用量として10GBを割り当てています。
PS C:\> vssadmin resize shadowstorage /For=C: /On=C: /maxsize=10GB
「システムの保護」を無効化するときは、以下のようにコマンドを実行します。
PS C:\> Disable-ComputerRestore -Drive C:\
復元ポイントの作成
復元ポイントは、アプリケーションやデバイスドライバーのインストール時やWindows Update時に自動的に作成される以外に、任意のタイミングで手動で作成することもできます。
復元ポイント手動で作成するときは「システムのプロパティ」画面の「システム保護」タブで「作成」をクリックします。
復元ポイント名前を入力する画面が表示されるので、管理しやすい名前を入力して「作成」をクリックします。なお、日時の情報は自動的に追加されます。
以上で、復元ポイントが作成されます。
コマンドで作成するときは
コマンドで復元ポイントを作成するときは、管理者権限でPowerShellを起動して、以下のようにコマンドを実行します。
「-Description」オプションの部分には、復元ポイントの内容が分かる任意の文字列を入力します。
PS C:\> Checkpoint-Computer -Description "システムの変更"
復元ポイントからシステムを復元
復元ポイントからシステムを復元した場合、アプリケーションやデバイスドライバーのインストール状況、レジストリやシステムファイルなどのシステム関連のデータは、適用する復元ポイントの時点に戻りますが、ユーザーデータは戻りません。
ユーザーデータ(ユーザーが作成したフォルダーやファイル)を復元ポイントの時点に戻したいときは、「システムの復元」からではなく、エクスプローラーの「以前のバージョンの復元」機能を利用して戻します。
復元ポイントからシステムを復元するときは「システムのプロパティ」画面の「システム保護」タブで「システムの復元」をクリックします。
「システムの復元」画面が表示されるので「次へ」をクリックします。
すると、作成されている復元ポイントが一覧表示されるので、適用したい復元ポイントを選択して「次へ」をクリックします。
なお、適用する復元ポイントに複数のドライブの情報が含まれている場合は、システムドライブ以外は復元するかどうかを選択できます。
確認画面が表示されるので「完了」をクリックします。
再度確認画面が表示されるので「はい」をクリックすると、システムの復元が開始されます。
あとは、復元が完了してWindowsのサインイン画面が表示されるまで待ちます。(復元にかかる時間は環境にもよりますが、数十分から数時間かかることもあります。)
なお、復元の開始前には自動的に復元ポイントが作成され、復元後に問題が修正されなかったり、状況がさらに悪化した場合は、上と同じ手順で「システムの復元」画面から、復元を取り消して復元前の状態に戻すことができます。
Windowsを起動できないときは「Windows回復環境」を起動して、復元ポイントからシステムを復元することもできます。
コマンドで復元するときは
コマンドでシステムを復元するときは、管理者権限でPowerShellを起動して、まず以下のコマンドを実行し、作成されている復元ポイントを確認します。
PS C:\> Get-ComputerRestorePoint
次に、適用したい復元ポイントの「SequenceNumber」を指定して、以下のようにコマンドを実行してシステムを復元します。
たとえば、「SequenceNumber」が「7」の復元ポイントを使ってシステムを復元する場合は、次のように実行します。
PS C:\> Restore-Computer -RestorePoint 7
なお、コマンドからシステムの復元を実行した場合は、確認画面などは表示されず、すぐに復元処理が開始されます。
あとは、復元が完了してWindowsのサインイン画面が表示されるまで待ちます。(復元にかかる時間は環境にもよりますが、数十分から数時間かかることもあります。)
復元ポイントの削除
古い復元ポイントのみを削除
最新の復元ポイントだけを残して、それ以外の古い復元ポイントを削除するときは「ディスククリーンアップ」から削除します。
「ディスククリーンアップ」は、スタートボタン右のテキストボックスなどに「cleanmgr」と入力して起動します。
「ディスククリーンアップ」を起動すると、ドライブの選択画面が表示されるので、復元ポイントを削除するドライブを選択して「OK」をクリックします。
「ディスククリーンアップ」画面が表示されたら「システムファイルのクリーンアップ」をクリックします。
もう一度ドライブの選択画面が表示されるので、復元ポイントを削除するドライブを選択して「OK」をクリックします。
「システムファイルのクリーンアップ」画面が表示されたら「その他のオプション」タブの「クリーンアップ」をクリックします。
確認画面が表示されるので「削除」をクリックします。
以上で、最新の復元ポイント以外の古い復元ポイントが削除されます。
なお、複数のドライブでシステムの保護を有効化している場合は、ディスククリーンアップを実行するドライブを指定し直して、同じ手順を実施します。
すべての復元ポイントを削除
すべての復元ポイントを削除するときは「システムのプロパティ」画面の「システム保護」タブで、復元ポイントを削除するドライブを選択してから「構成」をクリックします。
ドライブの設定画面が表示されるので「削除」をクリックします。
確認画面が表示されるので「続行」をクリックします。
以上で、選択したドライブのすべての復元ポイントが削除されます。
なお、複数のドライブでシステムの保護を有効化している場合は、対象のドライブを選択し直して、同じ手順を実施します。
コマンドで削除するときは
コマンドで復元ポイントを削除するときは、管理者権限でPowerShellを起動して、まず以下のコマンドを実行して、復元ポイントの一覧を表示します。
PS C:\> vssadmin list shadows
つぎに、復元ポイントを指定して削除を行いますが、指定方法がいくつかあります。
たとえば、一覧に表示されている復元ポイントのシャドウコピーIDを指定して削除するときは、以下のようにコマンドを実行します。
PS C:\> vssadmin delete shadows /Shadow=`{shadow copy ID`}
コマンドを実行すると「X個のシャドウコピーを削除しますか」と聞かれるので「Y」キーを押すと、削除されます。(確認不要で削除したいときは「/quiet」オプションを付加して実行します。)
特定のドライブの復元ポイントをすべて削除したいときは、以下のようにコマンドを実行します。
以下のコマンドでは、Cドライブの復元ポイントを確認なしですべて削除します。
PS C:\> vssadmin delete shadows /for=c: /all /quiet
すべてのドライブのすべての復元ポイントを削除したいときは、以下のようにコマンドを実行します。
PS C:\> vssadmin delete shadows /all /quiet
あとがき
「システムの保護(システムの復元)」を使ってシステムを復元する方法は、新たに予期しないトラブルを引き起こす可能性もあるため、システムトラブルが発生したときは、原因と考えられるプログラムをアンインストールしてみたり、設定を戻してみたりして、それでも問題が改善しない場合に利用するのが良いでしょう。