Windowsが再起動するたびに無効にして再度有効にしたい特定のハードウェアがあります。私はそれを行うことになっているバッチスクリプトを作成し、その後でプログラムを実行しました。
cd %~dp0
devcon.exe disable "PCI\VEN_1002&DEV_687F"
timeout /t 3
devcon.exe enable "PCI\VEN_1002&DEV_687F"
runMyWindows.exe --totally-not-virus
そもそもdevcon.exe
がこのための適切なアプリケーションであるかどうかはわかりません。Windowsスクリプトを記述した経験がないためです。
ただし、runMyWindows.exe
プログラムはWindowsデバイスマネージャーに移動して手動でこのデバイスを無効にしてから再度有効にするまで正常に機能しないため、これらのコマンドではうまく機能しないことがわかりました。
「管理者」グループに属するこのマシンには1人のユーザーしかいないので、.bat
ファイルをダブルクリックする以外に特別な方法でこのスクリプトを実行していません。再起動の場合は、スタートアップフォルダ(C:\Users\oxxo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
)。
Windowsの起動時に自動的に実行されるバッチスクリプト内でこれを正しく行う方法はありますか?
Windows 10
のセキュリティの「改善」のため、そして確かにWindows Vista
とUser Account Control
の導入以来、管理者グループのメンバーだけでなく、Run as administrator
が必要になると思います。
通常、Run as administrator
はRun as the user with the account name Administrator
ではなくRun as any user who holds membership of the Administrators group
を意味することをお読みください。
Run as administrator
を実行するには、バッチファイルを右クリックして、コンテキストメニューからRun as administrator
を選択します。
管理者として実行する他の方法もあります。
PowerShell
またはWSH
ヘルパー関数を使用する自己昇格バッチファイルを使用できます。Task Scheduler
を使用して、適切なトリガーとアカウント情報を選択できます(おそらくSYSTEMアカウントを使用)。さらに、DevCon.exe
が次のいずれかであることを確認する必要があります。
"%~dp0DevCon.exe" Disable "PCI\VEN_1002&DEV_687F*"
DevCon Disable "PCI\VEN_1002&DEV_687F*"
"C:\Tools\DevCon.exe" Disable "PCI\VEN_1002&DEV_687F*"
を使用して呼び出されました上記のすべてのケースで、例にないアスタリスクに注意してください
このスレッドを読むほとんどの人は、他の回答はあまり役に立ちません。それは主に、質問内のスクリプトを管理者権限で実行する方法に関するものだからです。ここで暗黙の質問に答えようとします:
質問のように、devcon.exe(6mb)を使用するのが最も簡単であることがわかりました。
set HARDWARE_ID="PCI\VEN_8086&DEV_4229&SUBSYS_11018086&REV_61"
devcon disable %HARDWARE_ID%
timeout /t 3
devcon enable %HARDWARE_ID%
devcon.exe
には管理者権限が必要です。
devcon
はどこで入手できますか?これは、Windowsドライバー開発ツールキットの一部です。残念ながら、公式リソースでは1GBのSDKをダウンロードするように求められています。私はここの答えのいずれかに従うことでそれを回避することができました: https://superuser.com/questions/1002950/quick-method-to-install-devcon-exe
入手したら、devcon.exe
があなたの%PATH%
。私はC:\Windows\System32\
。
管理者権限でコマンドプロンプトを開き、devcon hwids *
。すべてのデバイスとそれに対応するIDを出力します。それは多くの出力を生成します。コマンドプロンプトの検索機能を使用して、必要なものを見つけます。これが私が興味を持ったセクションです:
PCI\VEN_8086&DEV_4229&SUBSYS_11018086&REV_61\4&6AB551C&0&00E1
Name: Intel(R) Wireless WiFi Link 4965AGN
Hardware IDs:
PCI\VEN_8086&DEV_4229&SUBSYS_11018086&REV_61
PCI\VEN_8086&DEV_4229&SUBSYS_11018086
PCI\VEN_8086&DEV_4229&CC_028000
PCI\VEN_8086&DEV_4229&CC_0280
Compatible IDs:
PCI\VEN_8086&DEV_4229&REV_61
PCI\VEN_8086&DEV_4229
PCI\VEN_8086&CC_028000
PCI\VEN_8086&CC_0280
PCI\VEN_8086
PCI\CC_028000
PCI\CC_0280
特定の十分なIDを選択し、それが機能するかどうかを確認してください:
devcon find "PCI\VEN_8086&DEV_4229&SUBSYS_11018086&REV_61"
それでデバイスが1つしか見つからず、それが必要なデバイスである場合は、問題ありません。多くの場合、ハードウェアIDを引用符でエスケープする必要があることに注意してください。
私の場合、シャットダウンまたはスリープ後にコンピューターが起動したときにもこのスクリプトを実行する必要がありました。上記のスクリプトに適切なアクセス許可を与え、タスクスケジューラを使用して、ログイン時と起動時にスクリプトを実行しました。その用語は https://www.sevenforums.com/tutorials/67503-task-create-run-program- startup-log.html?ltr = T