我正在寻找一种方法来使用C#删除Windows还原点,可能是通过调用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开始并持续递增.所以它并不像在数组中那样简单地拥有索引.
至于获取序列号,我将代码从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()); }
我在我的盒子上测试了这个(顺便说一下Vista),它没有问题.还必须作为管理员运行,但我认为你想通了.