web-dev-qa-db-ja.com

Windows Vistaでドライバーを手動でロード/アンロードするにはどうすればよいですか?

ドライバーの1つが原因で、一部のWindowsVistaマシンの起動が非常に遅くなっていると思います。パフォーマンスログは基本的に役に立たないので、手動でドライバーをアンロード/ロードして、起動にかなりの時間がかかるかどうかを確認したいと思います。これどうやってするの?

5
Dane O'Connor

ドライバーとサービスは、Windowsで非常によく似た制御インターフェイスを備えています。 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servicesのエントリの「Start」値を「Disabled」に設定して再起動し、ドライバをロードせずにマシンがどのように起動するかを確認できます。

特定のドライバの「サービス」名を見つけるには、「デバイスマネージャ」でデバイスの「詳細」タブを調べ、「サービス」エントリを確認します。それができたら、前述の「サービス」キーの下にあるドライバーのキーの「開始」値を調べることで、ドライバーの現在の起動ステータスを記録できます。 「開始」値を4に変更して、後続の起動でドライバーを無効にします。 (そして、テストが終了したときに見つけたものに戻します!)

コマンドラインREGプログラムを使用して、この変更を確実にスクリプト化できます。以下のこのCMDスクリプトは、現在の開始タイプを表示した後、コマンドラインで渡されるサービス名の「開始」タイプを無効に変更します。

@echo off
if "%1"=="" goto syntax

reg query "HKLM\System\CurrentControlSet\Services\%1" /v Start > NUL 2>NUL
if errorlevel 1 goto no_service

echo Current Start setting for service "%1":
reg query "HKLM\System\CurrentControlSet\Services\%1" /v Start | find /i "Start"

reg add "HKLM\System\CurrentControlSet\Services\%1" /v Start /t REG_DWORD /d 4 /f > NUL 2> NUL
echo Service "%1" set to Disbled.
goto end

:no_service
echo The service specified, "%1" was not found!
goto end

:syntax
echo %0 service_name_to_disable

:end

「プロセスモニター」のブートログ機能を使用して、ドライバーが何をしているのかを理解することもできます。

4
Evan Anderson

「devcon」ユーティリティに関するquick&dirtyスニペットを貼り付けます。これをUltriumドライバーで使用しましたが、他のドライバーでも動作します。 Vistaで動作するかどうかわからない:

http://support.Microsoft.com/default.aspx?scid=kb;EN-US;Q311272     # download devcon

# For device (status)
devcon driverfiles *Ultrium*
devcon drivernodes *Ultrium*
devcon find *Ultrium*           # also remote -m:\\machine
devcon findall *Ultrium*        # w/removed     # also remote -m:\\machine
devcon hwids *Ultrium*          # also remote -m:\\machine
devcon resources *Ultrium*      # also remote -m:\\machine
devcon stack *Ultrium*          # also remote -m:\\machine
devcon status *Ultrium*

# For device (disruptive):
devcon help disable *Ultrium*
devcon help enable *Ultrium*
devcon help restart *Ultrium*
devcon help sethwid *Ultrium*       # also remote -m:\\machine
devcon help rescan

# For device (disruptive)
devcon help install <file.inf> <hwid>   # give it *exact* hwid as in inf file; if failed will install NULL driver, remove it
                    # *DEFUNCT* for tape: becomes ROOT\TAPEDRIVE\0000 instead SCSI\VENDOR_MODEL
devcon help update          # forces use of driver, even if better is already on the system (4 unsigned drivers).
devcon help updateni
devcon help remove          # this will remove device (DevMgmt->Uninstall), not uninstall driver!


# For classes
devcon help classes         # also remote -m:\\machine
devcon help listclass           # also remote -m:\\machine


# For machine
devcon reboot               # also remote -m:\\machine
1
kubanczyk