Как я могу удалить точки восстановления Windows в C #? - PullRequest
3 голосов
/ 06 февраля 2009

Я ищу способ удаления точек восстановления Windows с помощью C #, возможно, с помощью WMI.

Любой фрагмент кода будет очень полезен.

Ответы [ 2 ]

9 голосов
/ 15 февраля 2009

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

0 голосов
/ 06 февраля 2009

Хотя я ничего не знаю о WMI, этот ресурс может помочь вам начать работу. Это не касается непосредственно вашей проблемы, но, возможно, это может быть как-то полезно. В любом случае, похоже, что соответствующей функцией Win32 / COM является SRRemoveRestorePoint . Я надеюсь, что это было полезно.

Кроме того, вы можете работать с VBScript , если вы так склонны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...