ソフマップ・ドットコム

Windows Server での仮想環境( Windows Server 2012 と SCVMM )での検証や勉強した事を書き綴る技術色の強いブログです。

コンテキストメニューからシステムの復元ポイントを作成する方法


使っている Windows の動作が不安定になったりした時に、以前の Windows の状態へ戻すことのできるシステムの復元ですが、これを作成するには、コントロールパネルから操作を行う必要があります。

システムの復元ポイントを作成

万一のエラーに備え、頻繁にシステムの復元ポイントを作成する人には、このフローは若干面倒な作業です。そこで、コンテキストメニューにシステムの復元ポイントを作成するメニューを追加する事で、面倒なリンクを辿って、復元ポイントを作成する手間が省けます。

今回のケースでも、レジストリの操作・編集を行いますので、下記の注意事項に同意できる方のみ、設定をして下さい。

※ レジストリの操作を伴うものは一歩間違えると使用しているシステムに、深刻なエラーを引き起こし、最悪の場合、システムが起動し無くなる場合もありますので、操作・編集には充分、注意をしてください。また何らかのエラーやシステムの不具合アが生じた場合でも、責任は一切負いませんので、自己責任でお願い致します。

スクリプトの作成

今回は、システムの復元ポイントを作成するために VBScript を使用しています。以下のソースをテキストエディタにコピーして貼り付けて CreateRP.vbs と名前を付けて保存してください。

Function GetOS
	Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & ".\root\cimv2")
	Set colOS = objWMI.ExecQuery("Select * from Win32_OperatingSystem")
	For Each objOS in colOS
		If instr(objOS.Caption, "Windows 8") Then
			GetOS = "Windows 8"
		elseIf instr(objOS.Caption, "Windows 7") Then
			GetOS = "Windows 7"
		elseIf instr(objOS.Caption, "Vista") Then
			GetOS = "Windows Vista"
		End If
	Next
End Function

If GetOS = "Windows Vista" Or GetOS = "Windows 7" Then
	If WScript.Arguments.length =0 Then
		Set oShell = CreateObject("Shell.Application")
		oShell.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " Run", , "runas", 1
	Else
		CreateSRP
	End If
End If

If GetOS = "Windows 8" Then
	If WScript.Arguments.length =0 Then
		Set oShell = CreateObject("Shell.Application")
		oShell.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " Run", , "runas", 1
		Else
			const HKEY_LOCAL_MACHINE = &H80000002
			strComputer = "."
			Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
			strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore"
			strValueName = "SystemRestorePointCreationFrequency"
			oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,0
		CreateSRP
  	End If
End If

Sub CreateSRP
	Set SRP = getobject("winmgmts:\\.\root\default:Systemrestore")
	sDesc = "Manual Restore Point"
	sDesc = InputBox ("復元ポイントの識別に役立つ説明を入力してください。現在の日時の情報は自動的に追加されます。", "復元ポイントの作成", "手動復元ポイント")
	If Trim(sDesc) <> "" Then
		sOut = SRP.createrestorepoint (sDesc, 0, 100)
		If sOut <> 0 Then
			WScript.echo "Error " & sOut & ": Unable to create Restore Point."
				else
				MsgBox "復元ポイントは正常に作成されました。", 0, "システムの保護"
		End If
	End If
End Sub

レジストリエディタの編集

ファイル名を指定して実行から regedit と入力し、レジストリエディタを起動させたら、以下のレジストリキーを展開します。

HKEY_CLASSES_ROOT\Directory\Background\shellキー

展開後、新しいレジストリキーを作成します。

キーを展開し、新しいレジストリキーを作成

作成したレジストリキーの名前を Create Restore Point に変更し右ペインの規定を右クリックから修正を選択します。

規定を右クリックから修正を選択

値のデータに「 復元ポイントの作成 」と入力します。

値に復元ポイントを作成と入力

次に、新しい文字列値を作成します。

新しい文字列値を作成

文字列値の名前を HasLUAShield に変更し、さらた新しい文字列値を作成します。

更に新しい文字列値を作成

作成した文字列値の名前を Icon に変更し、右クリックから修正を選択します。

名前を Icon に変更後、修正を選択

値のデータに以下の値を入力します。

SystemPropertiesProtection.exe

値に SystemPropertiesProtection.exe と入力

Create Restore Point キーを選択し、新しいレジストリキーを作成します。

新しいレジストリキーを作成

レジストリキーの名前を command に変更後、右ペインの規定から修正を選択します。

規定を右クリックから修正を選択

値のデータに以下の値を入力します。

WScript C:\RestorePointScript\CreateRP.vbs

CreateRP.vbs を配置するパスは任意の場所で問題ありません。
これで、レジストリエディタの編集は完了です。値を入力したら、レジストリエディタを終了させます。

CreateRP.vbs の場所を指定

動作の確認

作成したレジストリキーと VBScript が正しく動作しているかを確認します。まず、デスクトップの適用な場所で右クリックをしてコンテキストメニューを表示させます。
以下の画像の様に「 復元ポイントの作成 」の項目が出来ているのを確認します。

復元ポイントの作成項目が表示されているのを確認

それでは、その「 復元ポイントの作成 」を選択します。以下の様に、復元ポイントの作成ダイアログが表示されますので、任意の名前を付けます。

復元ポイントの作成

しばらくすると、以下のダイアログが表示され、復元ポイントの作成が成功したことを知らせてくれます。

正常に作成されたとメッセージが表示される

次に、ファイル名を指定して実行から rstrui と入力しシステムの復元を起動します。

ファイル名を指定して実行から rstrui と入力

起動したら、推奨される復元の欄に先ほど作成した復元ポイントが表示されているのがわかります。

システムの復元ポイント

以上で、カスタマイズは完了です。


, , ,


Facebook ページへの「いいね!」もお願いします。 Facebook ページで最新記事のお知らせと、外部サイトの紹介を行っています。
是非「いいね!」をしていただき、最新の情報を Facebook で受け取ってください。



Comments are currently closed.