none
Image File Execution Options (Registry) CPU Affinity Parameter ? RRS feed

  • 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.





    Samstag, 4. Mai 2019 13:08

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-explorer

    Mittels 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-script

    Hier 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
    Samstag, 4. Mai 2019 14:45
  • 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-explorer

    Mittels 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-script

    Hier 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 :/

    Samstag, 4. Mai 2019 16:06
  • 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-6

    Alles 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=34553

    Wenn 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/
    Samstag, 4. Mai 2019 21:11