【发布时间】:2012-12-21 11:31:38
【问题描述】:
我的管理要求我的应用程序需要在安装后禁用系统上的系统还原。我已经找到并实现了下面的代码来实现这一点。该代码在 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 的功能。我已经看到了关于此文件实际涵盖哪些文件的不同描述,但只是在这里和那里的线程上的 cmets。对它的作用或工作方式没有真正的“好的”描述。
编辑:对于“为什么”我需要这样做有很多担忧,相信我完全理解并努力寻找另一种方法。但这是不可行的。更多信息,希望能让您放心。
本产品不适合个人使用。它将在公司级别用于锁定系统。此要求来自行业法规和标准。想想医疗或信用卡。受到保护的不仅仅是“我们的”日志、系统访问日志、系统使用日志、文件审核日志。因此,即使停用了系统还原,他们也可以使用其他方式来还原旧版本的日志,系统级日志记录文件访问以及谁访问了它,因此我们至少知道发生了日志篡改。本质上是使用操作系统来审核日志记录。还原点也将在一个简单的步骤中重置所有这些。
用户必须以管理员权限安装此应用程序。 目前,用户实际上必须手动执行此步骤,以便网站可以保持其行业认证。我们只是试图简化安装过程。站点管理员了解此要求。为了简化安装过程,我还实施了十几个其他类似的“系统管理员”更改。
【问题讨论】:
-
这与回答您的问题完全没有关系,但我真的希望这是一个内部应用程序,不会在您的公司之外分发。
-
这是一个奇怪的功能请求,我很好奇你为什么需要这样做 - 只是简单地禁用它可能不是实现任何目标的最佳方式这是你想要达到的目标。
-
实际上是商业产品。有大量的审计日志和系统配置与此相关。如果发生违规行为并且敏感数据受到损害,则需要审核日志对其进行追踪。保留系统还原将允许犯罪者将系统重置到违规之前的时间,从而擦除日志。是的,当这件事发生时,我并没有被激怒。
-
这个请求听起来相当恶意这里的最终目标是什么祝你好运让有人在这里参与为你提供任何代码来做你想做的事情。也许你可以告诉管理层在安全方面多花一点钱,并聘请经验丰富的系统管理员..
标签: c# windows-7 system-restore