我制作了一个与 Windows 电源计划混淆的程序。在进行任何更改之前,最好制作一份当前电源计划的副本,以便用户可以恢复它。有一个命令提示符命令powercfg –restoredefaultschemes
,但它会恢复所有计划,并且用户可能有一些他手动设置的设置,我不希望他丢失它。所以唯一的选择是先导出再导入。
因此,一旦程序启动,如果当前方案不存在,我将使用此代码创建当前方案的备份:
if (!File.Exists(@".\\PowerPlan.pow"))
{
var cmd = new Process { StartInfo = { FileName = "powercfg" } };
using (cmd)
{
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = $"/export PowerPlan.pow SCHEME_CURRENT"; //saves to the current folder, provide path if needed.
cmd.Start();
MessageBox.Show("Profile saved");
}
}
在这种情况下,我们可以使用SCHEME_CURRENT
来引用我们需要导出的方案,甚至不用使用 GUID。
导入配置文件也很容易
cmd.StartInfo.Arguments = $"/-import PowerPlan.pow";
cmd.Start();
但是,要真正恢复备份的电源计划,我们不仅需要导入,还要将其设置为活动状态。当我们更改当前电源计划中的某些内容并希望将其设置为活动时,我们可以简单地使用
cmd.StartInfo.Arguments = $"/setactive SCHEME_CURRENT";
cmd.Start();
但是当我们刚刚备份的电源计划被导入时,我们不能使用SCHEME_CURRENT
(因为当前是修改过的),并且我们不知道导入的计划的GUID来引用它并将其设置为活动。
有没有人知道如何在不知道 GUID 的情况下实现它?此外,如果有人看到备份/恢复电源计划的更好方法,我将很高兴听到您的想法,并将非常感激。