我如何删除C#中的Windows还原点?

我正在寻找一种方法来删除Windows还原点,使用C#也许通过调用WMI。

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

触摸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),它没有问题的工作。 也必须作为管理员运行,但我认为你想到了。

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

另外,如果你喜欢,你可以使用VBScript 。