如何删除c#中的Windows还原点?
答
接触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的方式),它的工作没有问题。还必须以管理员身份运行,但我认为你已经想到了。
答
虽然我对WMI一无所知,但this资源可能会让您开始。它不直接触及你的问题,但也许它可能有用。无论如何,似乎相关的Win32/COM函数是SRRemoveRestorePoint。我希望这是有用的。
或者,您可以使用VBScript,如果您非常喜欢。