The relative priority of foreground vs background applications can be set my modifying Win32PrioritySeparation at:
This type REG_DWORD entry defaults to 2 if the value is not present.
Win32PrioritySeparation determines how much processor time the threads of a foreground process receive each time they are scheduled on a Windows NT workstation processor.
|0|| Short processor interval. Foreground threads get the same amount
of processor time as background threads which is the same
as threads of processes with a priority class of Idle.
|1|| Medium length processor interval. Foreground processes get more
processor time than background processes each time they are scheduled.
|2|| Long processor interval. Foreground thread processes get much more
processor time than background processes.
On a Windows NT 4.0 Server, the length of processor time each thread gets is longer than on a workstation, but it is fixed. The value of Win32PrioritySeparation is used to calculate a priority boost for foreground processes. The higher the value, the greater the boost.