Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中删除Windows还原点?_C#_Windows_Wmi - Fatal编程技术网

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

如何在c#中删除Windows还原点?,c#,windows,wmi,C#,Windows,Wmi,我正在寻找一种使用C#删除Windows还原点的方法,可能是通过调用WMI 任何代码片段都会非常有用。虽然我对WMI一无所知,但资源可能会帮助您开始。它不会直接触及你的问题,但也许它在某种程度上是有用的。无论如何,似乎相关的Win32/COM函数是。我希望这是有用的 或者,如果你愿意的话,你也可以使用它。关于Morten所说的,你可以使用该API。据我所知,WMI没有提供删除还原点的方法。如果您有序列号,SRRemoveRestorePoint可以删除还原点。你可以通过WMI获得。下面是我删除还

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


任何代码片段都会非常有用。

虽然我对WMI一无所知,但资源可能会帮助您开始。它不会直接触及你的问题,但也许它在某种程度上是有用的。无论如何,似乎相关的Win32/COM函数是。我希望这是有用的


或者,如果你愿意的话,你也可以使用它。

关于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);
}
我刚刚投了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)上测试了这个,它工作正常。也必须以管理员的身份运行,但我想你已经明白了