如何在c#中删除Windows还原点?

Dea*_*tes 3 c# windows wmi

我正在寻找一种方法来使用C#删除Windows还原点,可能是通过调用WMI.

任何代码段都非常有用.

Rob*_*upt 9

触及Morten所说的可以使用该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);
}
Run Code Online (Sandbox Code Playgroud)

我只是扔了335,因为那是我能在我的系统上找到的最远的一个.计数可能从1开始并持续递增.所以它并不像在数组中那样简单地拥有索引.

至于获取序列号,我将代码从Microsoft转换为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());
    }
Run Code Online (Sandbox Code Playgroud)

我在我的盒子上测试了这个(顺便说一下Vista),它没有问题.还必须作为管理员运行,但我认为你想通了.