インフラエンジニアも人間じゃない?

インフラエンジニアの備忘録

例のグラボ用にUserGpuPreferencesの設定をスクリプトで追加する(HW無改造)

例のグラボことRX470を無改造で使ってますが、いちいち設定からグラフィック設定を実行ファイル単位で追加するのが面倒だったのでスクリプトにしました。
2秒ごとにユーザ権限で起動しているプロセス一覧を取ってきてレジストリにぶちこむので、次回起動時から設定反映されます。
改造しても4K60fpsで安定しないという噂だったので当分はこれでいいでしょう。

適当にUserGpuPreferences.ps1とか作って下記のスクリプトをコピペしてください。
あとはPowerShellで実行すればOKです。
初回実行だけいらん警告が出ますが無視しましょう。

$ErrorActionPreference = "silentlycontinue"

$regPath = "HKCU:\Software\Microsoft\DirectX\UserGpuPreferences"
$regKeyValue = "GpuPreference=2`;"

$processList = Get-Process | Select-Object Path
$processList | ForEach-Object {New-ItemProperty $RegPath -name $_.Path -PropertyType "String" -Value $RregKeyValue}

while(1) {
	timeout 2
	$nowProcessList = Get-Process | Select-Object Path
	$compareObjectList = Compare-Object $processList $nowProcessList -Property "Path" | foreach { if($_.SideIndicator -eq  "=>"){$_} }
	$compareObjectList | ForEach-Object {New-ItemProperty $RegPath -name $_.Path -PropertyType "String" -Value $regKeyValue}
}
  • 無限ループするので表示が邪魔ならタスクスケジューラにでも仕込んでください。
  • UAC経由などユーザ権限でないものは追加されません。ユーザ権限じゃないやつはいらんやろと思ったため。
  • 確認した限りではログイン・ログオフは不要で次にexeを起動した時点から反映されるようです。
  • おかしくなったら"HKCU:\Software\Microsoft\DirectX\UserGpuPreferences"配下のキーを全消ししてください。