我正在寻找一种使用C#删除Windows还原点的方法,可能是通过调用WMI。
任何代码段都会非常有用。
答案 0 :(得分: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);
}
我刚刚投入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),它没有问题。还必须作为管理员运行,但我认为你认为。
答案 1 :(得分:0)
虽然我对WMI一无所知,但this资源可能会帮助您入门。它并没有直接触及你的问题,但它可能会以某种方式有用。无论如何,似乎相关的Win32 / COM功能是SRRemoveRestorePoint。我希望这有用。
或者,如果您愿意,可以使用VBScript。