Касаясь того, что сказал Мортен, вы можете использовать этот 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), и она работала без проблем. Также должен быть запущен от имени администратора, но я думаю, вы поняли это.