どのように私は、WindowsがC#で復元ポイントを削除することができますか?

StackOverflow https://stackoverflow.com/questions/519404

  •  21-08-2019
  •  | 
  •  

質問

イムは、WindowsがWMIを呼び出すことによって、おそらくC#を使用して復元ポイントを削除する方法を探しています。

任意のコードスニペットは、非常に参考になる。

役に立ちましたか?

解決

モートンは、あなたがそのAPIを使用することができます言ったことに触れます。 WMIは、私の知る限り復元ポイントを削除する方法を提供していません。 SRRemoveRestorePointを使用すると、シーケンス番号を持って、復元ポイントを削除することができます。あなたは、WMI経由ことを得ることができます。ここでは、復元ポイントを削除するために私のコードです。

[DllImport("Srclient.dll")]
public static extern int SRRemoveRestorePoint(int index);

private void button1_Click(object sender, EventArgs e)
{
    int SeqNum = 335;
    int intReturn = SRRemoveRestorePoint(SeqNum);
}

私はちょうど私が私のシステム上で見つけることができるように、そのバック最も遠いものだったので、335で投げました。カウントは1から始まり、インクリメントし続けること、その可能性が高いです。それはちょうど、アレイにあなたのようなインデックスを考えたほど簡単ではありません。

のシーケンス番号を取得するためとして、私は意志C#にマイクロソフトするからコードを変換しましたあなたにその情報を与えます。参照としてSystem.Managementを追加してください。それ以外の場合、このコードは正しく動作しません。

    private void EnumRestorePoints()
    {
        System.Management.ManagementClass objClass = new System.Management.ManagementClass("\\\\.\\root\\default", "systemrestore", new System.Management.ObjectGetOptions());
        System.Management.ManagementObjectCollection objCol = objClass.GetInstances();

        StringBuilder Results = new StringBuilder();
        foreach (System.Management.ManagementObject objItem in objCol)
        {
            Results.AppendLine((string)objItem["description"] + Convert.ToChar(9) + ((uint)objItem["sequencenumber"]).ToString());
        }

        MessageBox.Show(Results.ToString());
    }

私は私の箱(ちなみにVistaの場合)でこれをテストし、それが問題なく働きました。また、管理者として実行する必要はありますが、私はあなたがそれを考え出したと考えています。

他のヒント

私はWMIについて何も知らないが、こののリソースは、あなたが始めるかもしれません。それは直接あなたの問題に触れていないが、おそらくそれは何らかの形で役立ちます。とにかく、関連のWin32 / COM機能は SRRemoveRestorePoint のようです。私は、これは任意の使用であった願っています。

あなたがその気なら別の方法として、あなたは、 VBScriptのにして作業することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top