Fragensteller
Image File Execution Options (Registry) CPU Affinity Parameter ?

Frage
-
Gibt es die Möglichkeit Programme per "Image File Execution Options" (Registry) noch vor dem Start permanent einem CPU Kern zuzuweisen? Ähnlich wie die Prozess Priorität (CpuPriorityClass)? Ich brauche diese Information explizit für ein altes Online Spiel (12 Jahre) das nur auf einem Kern läuft. Um dieses Spiel sozusagen zu "isolieren". Das Game hat selbst bei neuer und starker Hardware einige Performance Probleme die sich früher damit "mindern" ließen.
Das nutzen zusätzlicher Programme funktioniert hier leider nicht & der Taskmanager wird während des Spiele Betriebs von EasyAntiCheat Blockiert. Darum ist eine "Vor dem Start" Lösung notwendig. Ich hoffe jemand hat mir etwas passendes :)
Per Batch File, Parameter in einer Verknüpfung oder ähnliches ist es ebenfalls nicht möglich da das Game per Launcher gestartet wird der dann wiederum die Spiele exe ausführt.
- Bearbeitet DragonForceWR Samstag, 4. Mai 2019 14:19
Alle Antworten
-
Taskmanager blockiert?
Dann versuche mal den ProcessExplorer von Sysinternals. Mit diesem kann man die Affinität auch setzen.
https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorerMittels kleine Powershell-Script kannst du das auch selber:
https://gallery.technet.microsoft.com/scriptcenter/Set-processor-affinity-895062bb
https://stackoverflow.com/questions/19187241/change-affinity-of-process-with-windows-scriptHier direkt mit einer Verfahrensanweisung:
https://stackoverflow.com/questions/19250927/in-powershell-set-affinity-in-start-process$app_name = "app.exe" $app_arguments = "arg0" $pinfo = New-Object System.Diagnostics.ProcessStartInfo $pinfo.FileName = $app_name $pinfo.Arguments = $app_arguments $p = New-Object System.Diagnostics.Process $p.StartInfo = $pinfo $p.Start() $p.ProcessorAffinity=0x3
Als $app_name ist u.U. der vollständige Pfade anzugeben.
Mittels $p.Start() wird der Prozess gestartet, die folgende Anweisung setzt die Affinity.
- Als Antwort vorgeschlagen Der Suchende Samstag, 4. Mai 2019 14:45
- Als Antwort markiert DragonForceWR Samstag, 4. Mai 2019 15:57
- Tag als Antwort aufgehoben DragonForceWR Samstag, 4. Mai 2019 15:57
-
Taskmanager blockiert?
Dann versuche mal den ProcessExplorer von Sysinternals. Mit diesem kann man die Affinität auch setzen.
https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorerMittels kleine Powershell-Script kannst du das auch selber:
https://gallery.technet.microsoft.com/scriptcenter/Set-processor-affinity-895062bb
https://stackoverflow.com/questions/19187241/change-affinity-of-process-with-windows-scriptHier direkt mit einer Verfahrensanweisung:
https://stackoverflow.com/questions/19250927/in-powershell-set-affinity-in-start-process$app_name = "app.exe" $app_arguments = "arg0" $pinfo = New-Object System.Diagnostics.ProcessStartInfo $pinfo.FileName = $app_name $pinfo.Arguments = $app_arguments $p = New-Object System.Diagnostics.Process $p.StartInfo = $pinfo $p.Start() $p.ProcessorAffinity=0x3
Als $app_name ist u.U. der vollständige Pfade anzugeben.
Mittels $p.Start() wird der Prozess gestartet, die folgende Anweisung setzt die Affinity.
ProcessExplorer von Sysinternals - Wegen EasyAntiCheat möchte ich auf zusätzliche Programme verzichten.
Mittels kleine Powershell-Script kannst du das auch selber - Nein. Es wird ein Updater gestarter, der den Launcher Startet welcher Game.Exe ausführt. Wird es nicht so gemacht und man versucht direkt das game zu starten wird es durch EAC blockiert. Sprich keine PowershellScripts möglich (meines wissens nach). ES MUSS über die Registry erfolgen.
Am besten änhlich wie es mit der Prozess Priorität funktioniert (CpuPriorityClass). Ich bin für deine Antwort zwar dankbar, allerdings hilft es mir nicht weiter :/
- Bearbeitet DragonForceWR Samstag, 4. Mai 2019 16:07
-
Powershell könnte trotzdem helfen.
Per Get-Process den Prozess finden, da gibts mehrere Kriterien.
Dann sollte man auch die Affinity dieses Prozesses setzen können.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-process?view=powershell-6Alles was man sonst noch im Netz findet ist der manuelle Start.
Allerdings habe ich auch diese Erklärung gefunden:
https://devblogs.microsoft.com/oldnewthing/20050817-10/?p=34553Wenn also der Hauptprozess mit CPUAffinity 1 gesetzt ist, sollten alle Childprozesse dies dann erben.
Das kannst du dann mit Processexplorer, der übrigens nicht installiert werden muss, kontrollieren.
Vielleicht hilft dir auch diese Idee?
https://www.howtogeek.com/399153/windows-10s-new-sandbox-feature-is-everything-weve-always-wanted/- Bearbeitet Der Suchende Samstag, 4. Mai 2019 21:24