17

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.exeWindows スクリプトを書いた経験がまったくないので、そもそもこれが適切なアプリケーションかどうかはわかりません。

runMyWindows.exeただし、 Windows デバイス マネージャーに移動し、このデバイスを手動で無効にしてから再度有効にするまで、プログラムが正常に動作しないため、これらのコマンドがうまく機能しないことに気付きました。

このマシンには「管理者」グループに属するユーザーが 1 人しかいません。このスクリプトは、ファイルをダブルクリックする以外の特別な方法で実行していません.bat。再起動の場合は、スタートアップ フォルダー ( C:\Users\oxxo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) から実行されます。

Windows の起動時に自動的に実行されるバッチ スクリプト内でこれを適切に行う方法はありますか?

4

3 に答える 3

13

このスレッドを読んでいるほとんどの人は、他の回答があまり役に立たないと思うでしょう。なぜなら、それは主に管理者権限で質問のスクリプトを実行する方法に関するものだからです. ここで暗黙の質問に答えようとします。

コマンドラインからデバイスを有効/無効にする

質問のように、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 ドライバー開発ツールキットの一部です。残念ながら、公式リソースでは 1 GB SDK をダウンロードするように求められます。ここの回答の1つに従うことで、それを回避することができました: https://superuser.com/questions/1002950/quick-method-to-install-devcon-exe

入手したら、 が にあることを確認devcon.exeしてください%PATH%。私は私のものを入れましたC:\Windows\System32\

操作したいデバイスのハードウェア ID を見つける

管理者権限でコマンド プロンプトを開いて do を実行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 を引用符でエスケープする必要があることに注意してください。

おまけ: 起動時または電源投入時に .bat スクリプトを実行する

私の場合、シャットダウンまたはスリープ後にコンピューターが起動したときにも、このスクリプトを実行する必要がありました。上記のスクリプトに適切な権限を付与し、タスク スケジューラを使用してログイン時と起動時にスクリプトを実行しました 。 html?ltr=T

于 2019-12-26T16:24:30.853 に答える