2009-02-06 41 views

回答

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的方式),它的工作沒有問題。還必須以管理員身份運行,但我認爲你已經想到了。

0

雖然我對WMI一無所知,但this資源可能會讓您開始。它不直接觸及你的問題,但也許它可能有用。無論如何,似乎相關的Win32/COM函數是SRRemoveRestorePoint。我希望這是有用的。

或者,您可以使用VBScript,如果您非常喜歡。