public static IEnumerable <Guid> FindAll() { var schemeGuid = Guid.Empty; uint sizeSchemeGuid = (uint)Marshal.SizeOf(typeof(Guid)); uint schemeIndex = 0; while (PowrProf.PowerEnumerate(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, (uint)PowrProf.AccessFlags.ACCESS_SCHEME, schemeIndex, ref schemeGuid, ref sizeSchemeGuid) == 0) { yield return(schemeGuid); schemeIndex++; } }