我正在寻找一种方法来删除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 。