public static bool SetServiceProcessorAffinity(string serviceName, bool[] affinity)
{
Service service = GetService(serviceName);
if (service != null && service.ProcessId > 0 && affinity != null && affinity.Length > 0)
{
try
{
System.Diagnostics.Process process = System.Diagnostics.Process.GetProcessById(service.ProcessId);
int affinityInt = affinity[affinity.Length - 1] ? 1 : 0;
for (int i = affinity.Length - 2; i >= 0; i--)
{
if (affinity[i])
{
affinityInt = affinityInt + 2 * (affinity.Length - 1 - i);
}
}
IntPtr affinityPtr = new IntPtr(affinityInt);
process.ProcessorAffinity = affinityPtr;
return true;
}
catch { }
}
return false;
}