-3

我有来自管理层的要求,即我的应用程序需要在安装后禁用系统上的系统还原。我已经找到并实现了下面的代码来实现这一点。该代码在 XP 和 Vista 上运行良好,但在 Win7 上似乎不一样。

public void disableSystemRestore(string drive)
{
    try
    {
        ManagementScope scope = new ManagementScope("\\\\localhost\\root\\default");
        ManagementPath path = new ManagementPath("SystemRestore");
        ObjectGetOptions options = new ObjectGetOptions();
        ManagementClass process = new ManagementClass(scope, path, options);
        ManagementBaseObject inParams = process.GetMethodParameters("Disable");
        inParams["Drive"] =  drive;
        ManagementBaseObject outParams = process.InvokeMethod("Disable", inParams, null);
    }
    catch(ManagementException err)
    {
        MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
    }
}

问题是在 Win7 上,系统还原被包装到系统保护中。系统保护为每个硬盘驱动器提供 3 个选项。

1) 系统还原和文件版本

2) 仅文件版本

3) 无

只要没有人手动更改此设置,代码就可以正常工作。但是,如果用户之前更改了此设置,则代码设置 Option2 而不是 Option3。我该如何纠正?

此外,我无法很好地描述 Option2 的功能。我已经看到了对此实际涵盖哪些文件的不同描述,但只是在这里和那里对线程的评论。对它的作用或工作方式没有真正的“好”描述。

编辑:对于“为什么”我需要这样做并相信我,我完全理解并努力寻找另一种方式,这引起了很多关注。但这是不可行的。更多信息,希望能让您放心。

本产品不适合个人使用。它将在公司级别用于锁定系统。此要求来自行业法规和标准。想想医疗或信用卡。受到保护的不仅仅是“我们的”日志、系统访问日志、系统使用日志、文件审核日志。因此,即使停用了系统还原,他们也可以使用其他方式来还原旧版本的日志,系统级日志记录文件访问以及谁访问了它,因此我们至少知道发生了日志篡改。本质上是使用操作系统来审核日志记录。还原点也将在一个简单的步骤中重置所有这些。

用户必须以管理员权限安装此应用程序。目前,用户实际上必须手动执行此步骤,以便站点可以保持其行业认证。我们只是试图简化安装过程。站点管理员了解此要求。我还在实施十几个类似的“系统管理员”更改以简化安装过程。

4

1 回答 1

0

这不是您问题的直接答案,但评论太长了。

虽然这不是对内部软件的完全不合理的要求,但对于商业软件来说却是一个可怕的想法。

这个计划至少有六件事是我能想到的。随意将此列表重新提交给管理层,看看您是否可以获得不同的指令。

  1. 这听起来像是公司软件而不是用户/个人软件。许多公司都制定了 Active Directory 策略,无法禁用系统还原或自动重新启用它。

  2. 只有系统管理员才能安装它,因为普通企业用户没有权限。 鉴于此,没有什么可以阻止系统管理员在安装后重新启用系统还原进行安装。(如果普通用户可以自己安装,那么他们也将有权重新启用它)

  3. 任何在安装过程中试图禁用系统保护的东西都可能被病毒保护标记为恶意软件。这可能会阻止它工作和/或完全禁用您的软件。它也可能导致系统管理员反对它。

  4. 禁用系统还原不会阻止某人手动删除日志。

  5. 此计划的任何内容都不会阻止其他备份解决方案(例如 SecondCopy 或其他网络备份)能够恢复“旧”日志。 事实上,没有什么能阻止恶意用户简单地复制旧日志,做他的事,然后替换旧日志。

  6. 它可能使您的公司对安装它的系统上的任何丢失数据负责。(IANAL。确保您的律师在编写使用条款时了解这一点以及潜在的影响。)


简而言之,它不会为所欲为,很容易绕过,是一件非常敌对的事情。

于 2013-01-07T18:48:19.750 回答