|
|||||
<このサンプルの概要> システム復元ポイントを作成するサンプル(VB.NET)です。 XPの場合、「アクセサリ→システムツール→システムの復元」で作成出来る復元ポイントです。 VB.NETでシステム復元ポイントを作るには2つのプログラミング方法があります。 1つは、System.Management.ManagementClass("root\default:SystemRestore")を使用する方法です。 この方法を使用したツールとして復元ポイント作成ツール(1.0.0.0)を公開しました。原因不明ですが この方法では時々[プロバイダによる読み込みエラーです]が発生すると言う情報がありました。 そこで、もう1つの方法を試してみる事にしました。 GetObject("winmgmts:\\.\root\default:Systemrestore")を使用する方法です。 この方法を使用したツールとして復元ポイント作成ツール(1.0.0.1)を公開しています。 残念ながら、この方法でも時々エラーが発生しました。エラーログは以下の通りです。 プロバイダによる読み込みエラーです 場所 Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet(...) 場所 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(...) 場所 NonCrp.clsMain.Main() 現在は復元ポイント作成ツール(1.0.0.2)を公開しています。 こちらは、GetObject("winmgmts:\\.\root\default:Systemrestore")の方法でエラーが発生した場合は、 最大10回のリトライをして、エラー時に使用者の手を煩わす可能性を減らしています。 ※[プロバイダによる読み込みエラーです]について シンテスムのプロパティーで環境変数のPATHに以下の設定を追加したらエラーが発生しなくなった との報告がありました。%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\wbem ★フォームモジュール(Form1.vb) Public Class Form1 Private Sub Button1_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' System.Managementを参照設定する必要があります ' 復元ポイントを作成するオブジェクト取得 Dim sr As New System.Management.ManagementClass("root\default:SystemRestore") ' 復元ポイント作成の実行 sr.InvokeMethod("CreateRestorePoint", New Object() {"NonCrp1", 0, 100}) End Sub Private Sub Button2_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ' 復元ポイントを作成するオブジェクト取得 Dim sr As Object = GetObject("winmgmts:\\.\root\default:Systemrestore") ' 復元ポイント作成の実行 Dim crp As Object = sr.createrestorepoint("NonCrp2", 0, 100) End Sub End Class |