【问题标题】:How can I delete Windows restore points in c#?如何在 C# 中删除 Windows 还原点?
【发布时间】:2009-02-06 07:16:14
【问题描述】:

我正在寻找一种使用 C# 删除 Windows 还原点的方法,也许是通过调用 WMI。

任何代码 sn-p 都会很有帮助。

【问题讨论】:

    标签: c# windows wmi


    【解决方案1】:

    谈到 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),它没有问题。还必须以管理员身份运行,但我想你已经想到了。

    【讨论】:

      【解决方案2】:

      虽然我对 WMI 一无所知,但this 资源可能会让您入门。它不会直接触及您的问题,但也许它会以某种方式有用。无论如何,似乎相关的Win32/COM函数是SRRemoveRestorePoint。我希望这有任何用处。

      如果您愿意,也可以使用VBScript

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        • 1970-01-01
        • 2018-12-16
        相关资源
        最近更新 更多