Also, es heißt genau
SetProcessAffinityMask
und darüber kommst du dann erstmal an eine gute Stelle im
MSDN, von wo aus man sich weiter durchgraben könnte.
z.B. findet man da
GetCurrentProcessorNumber, womit der eigene Prozess erfährt, wo er grade in diesem Moment läuft.
Für externe Programme gibt es sowas anscheinend nicht.
(der gewünschte Prozess muß ja auch nichtmal grade verarbeitet werden, so daß er keinem Kern zugeordnet ist)
Klar könnte man jetzt in alle Programme, bzw. eigentlich sogar in alle Threads, einen Code injizieren, welcher das Abfragt, aber wozu der Aufwand und wozu den PC so ausbremsen.
Außerdem könnte diese Zuweisung auch dutzende oder hunderte Male in der Sekunde wechseln ... da kann doch keiner mehr zugucken.
PS: ein Programm ist keinem Prozessor zugeordnet, sondern alle seine Threads.
Und diese müssen nichtmal auf dem selben Prozessor/Kern zugeordnet sein.
Heißt also, du hättest so eine unüberschaubare Liste von tausenden Threads.
Du kannst aber den Programmen/Threads sagen wo sie laufen sollen.
Da gibt's auch schon fertige Programme.
Wenn du festlegst wo was läuft, dann weißt du wo was läuft.
z.B. einem Programm und seinen Threads nur einen Prozessor zuweisen und allen Anderen diesen verweigern.