ドライバーの1つが原因で、一部のWindowsVistaマシンの起動が非常に遅くなっていると思います。パフォーマンスログは基本的に役に立たないので、手動でドライバーをアンロード/ロードして、起動にかなりの時間がかかるかどうかを確認したいと思います。これどうやってするの?
ドライバーとサービスは、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
「プロセスモニター」のブートログ機能を使用して、ドライバーが何をしているのかを理解することもできます。
「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