【发布时间】:2014-07-13 15:32:40
【问题描述】:
我正在做一个用 C# 管理 Windows 电源计划的软件,并且通过 ManagementObjet 轻松获取电源计划并设置它的设置。但是我想创建一个新的电源计划,换句话说,创建一个新的 WMI 对象,我不知道该怎么做。
有谁知道如何制作它?
【问题讨论】:
我正在做一个用 C# 管理 Windows 电源计划的软件,并且通过 ManagementObjet 轻松获取电源计划并设置它的设置。但是我想创建一个新的电源计划,换句话说,创建一个新的 WMI 对象,我不知道该怎么做。
有谁知道如何制作它?
【问题讨论】:
您不能在 WMI 中执行此操作。您可以按照here 所述使用用于电源方案管理的 Win32 API 来创建您的计划,然后使用 WMI 监控/管理它。
要创建电源方案,您需要 首先复制一个现有的方案 使用 PowerDuplicateScheme 函数,指定的 GUID 您希望建立新的计划 计划上。您应该复制其中之一 内置方案并修改 根据您的需要进行电源设置。
【讨论】:
现在它正在工作......按照下面我是如何做到的:
using System.Runtime.InteropServices;
[DllImport("powrprof.dll", EntryPoint = "PowerDuplicateScheme", SetLastError = true)]
public static extern UInt32 PowerDuplicateScheme(IntPtr RootPowerKey, ref Guid SrcSchemeGuid, ref IntPtr DstSchemeGuid);
public static Guid createNewPowerPlan()
{
Guid result = new Guid();
IntPtr RetrPointer = IntPtr.Zero;
// Attempt to duplicate the 'Balanced' Power Scheme.
NativeMethods.PowerDuplicateScheme(IntPtr.Zero, ref VISA_PM_BASIC_SCHEMES.BALANCED, ref RetrPointer);
if (RetrPointer != IntPtr.Zero)
{
// Function returns a pointer-to-memory, marshal back to our Guid variable.
result = (Guid)Marshal.PtrToStructure(RetrPointer, typeof(Guid));
}
return result;
}
感谢您的帮助
【讨论】: