web-dev-qa-db-ja.com

「新しいハードウェアの検出ウィザード」を回避する/ドライバを自動的にインストールするようにWindowsを設定する

私のマザーボードは10年の良い部分の後でようやく死んだので、中古のシステムを購入しました。古いハードドライブとサウンドカードを新しいシステムに入れ、古いキーボードとマウスを接続しました(残りのコンポーネント(CPU、RAM、mobo、ビデオカード)は新しいシステムのものです)。

Windowsを起動して新しいハードウェアのドライバーをインストールするのは難しいことだと私は事前に知っていました(特に基本コンポーネントが新しいため)が、ドライバーのインストールなどの作業を完全に行うことはできません。キーボードとマウスが機能しないため、ビデオカード(doが機能し、BIOS画面、DOSモード、Windows 7、XPでブートメニューなど、WindowsにはありませんXP自体)。

起動しようとするたびにXP(通常モードまたはセーフモードで)、検出されたすべての新しいハードウェアに対してポップアップするバルーンの束が表示されます新しいハードウェアが見つかりましたウィザード =プロセッサ用(当然ながら、最下位レベルのコンポーネントのドライバをインストールする必要があります。)残念ながら、マザーボードドライバ(PS/2またはUSBポート用)がまだ機能していないため、キーボードとマウスがまだ機能しないため、[次へ]をクリックできませんまだインストールされていません。シリアルマウスも試してみましたが、うまくいきませんでした。これも、DOS、7などでは機能しますが、XPにはシリアルポートがないためドライバがインストールされました。

「署名されていないドライバの警告」を無視するように手動で設定するために、ソフトウェアハイブとシステムハイブをWindows 7でマウントしてみました(参照した両方のドライバ署名ポリシー設定を使用)。それはうまくいきませんでした。私はまだウィザードを取得します。

これらは、ファンシー、プロプライエタリ、サードパーティ、または署名されていないドライバーでさえありません。これらは、Windowsに付属するドライバーです。CPU、RAM、IDEコントローラーなどのドライバーがそうである傾向があるためです。そして、キーボードとマウスのドライバーは、一般的なものです(ただし、それらが接続されているポートのドライバがまだインストールされていないので、それらは無関係であると述べた)。

明らかに、過去数年のある時点で、Windowsが新しいハードウェアを検出したときに常にプロンプ​​トを表示するように設定が変更されました。 (また、異常なシャットダウン時にシャットダウンイベントトラッカーを表示するように構成されていたため、デスクトップが見えるようにオフにする必要がありました。)

ああ、私はすべてのPNFファイルを削除して再生成しようとしましたが、それも役に立ちませんでした。

失敗した場合にプロンプ​​トを表示する前に、少なくとも新しいハードウェアのドライバーを自動的にインストールするようにWindowsをリセットする方法を知っている人はいますか?逆に、自動ドライバーのインストールをオフにする方法(およびウィザードでプロンプトを表示する方法)を知っている人はいますか?

どうもありがとう。


明確にする必要がありますそうでなければ答えで出てくる可能性が高いので、以下のダイアログについて話しているのではなく、その下のダイアログについて話しているのです。

alt text

alt text


ああ、次の種類の提案が発生する前に回避するため、デバイスマネージャーを使用して無効化、アンインストール、修復などを行う。キーボードやマウス(または他の入力デバイス)がインストールされていない/機能していない場合、デバイスマネージャーを使用するなどのアクションをどのように正確に実行できますか?

9
Synetech

私はついにWindowsを入手しましたXP金曜日に新しい古いシステムで作業しています!Woohoo!(たった5か月しかかかりませんでした。)

他の誰かが同様の問題に遭遇した場合に修正するために必要な具体的な手順を述べますが、残念ながら、フラストレーションと焦りが高まっているため、やや焦土のアプローチを採用し、一度に複数の手順を実行しました。ただし、私は使用した作業ファイルを保持し、加えた変更を確認しました。そのため、いくつかのことをリストして、それが役立つか、少なくとも役立つかを説明します。

(明らかにこれは上級ユーザー向けの高度なものです。ただし、上級ユーザーでさえこれをかなり台無しにする可能性があるため、最初のバックアップ手順です。)


問題を要約すると、Windowsの既存のインストールを含むハードドライブが新しい​​システムに挿入され、Windowsはハードウェアのドライバーを自動的にインストールせず、想定署名される。さらに、Windowsはキーボードまたはマウス(またはその他の入力デバイス)のドライバーをインストールしていないため、ユーザーはダイアログを受け入れることができません。


これがtl; rdバージョンです。

  1. レジストリハイブのバックアップを作成します。
  2. 可能なすべてのプログラム、ドライバー、およびサービスを無効にします。
  3. すべてを表示できるように(タスクバーなど)設定します(情報を非表示にしないでください)。
  4. .BATファイルを自動実行して、変更を加えたりオンライン(OS内)タスクを簡単に実行したりできます。
  5. マクロ/スクリプトアプリを使用して、自分で行うことはできないため、キーの押下とボタンのクリックを自動化します。
  6. すべてのシステムファイルが存在することを確認します。
  7. 問題のある、もはや存在しないハードウェアを手動で削除します。

    • (純粋な)DOSまたは他のOSを起動し、レジストリハイブのバックアップコピーを別の場所に作成します。これには%systemroot%\System32\CONFIG\*%userprofile%\NTUSER.DATが含まれます

    • BOOT.INIのドライブ/パーティション設定と[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00 *\Control]のSystemBootDeviceが正しく設定されていることを確認します。これは、システムドライブが以前とは異なるドライブ/パーティションにある可能性があるためです(私の場合、 (r)ディスクは以前は0でしたが、新しいドライブのために1になりました)。

    • 適切なレジストリハイブをマウントし、すべての無関係な自動実行プログラム、特にウィンドウをスローするものや、最小化したり、他のウィンドウやダイアログを前面に表示したりすることができないため、ビューを不明瞭にするものをすべて無効にします( must単純化して、このような問題をトラブルシューティングします)。自動実行エントリを削除する必要はありません。代わりにそれらを無効にすることができます。これにより、Windowsを実行し、それらを再度自動実行したい場合(特に、コマンドの束があるエントリの場合)に残ります。 -行引数):

      • Runキーの場合、コマンドの先頭で#文字または何かを単純にトスできます。このようにすると、Windowsは有効なファイルではないため実行できなくなり、無視されます。

      • SYSTEMハイブをマウントし、無関係なドライバーとサービス(特に存在しないハードウェアのドライバーとサービス)のstartパラメーターを無効(dword:4)に設定します。

      • コマンドの先頭に#を追加して、…\ Control\Session ManagerのBootExecutePageDefrag などを無効にします(ドライブをチェック/修正する必要があるため、autocheckはそのままにしておきます)リセットボタンを使用して再起動する必要がある場合)。

      • Startupフォルダ内のショートカットを削除する代わりに、別の場所に移動してください。

    • SOFTWAREおよびNTUSERレジストリハイブをマウントし、\Software\Microsoft\Driver Signingおよび\Software\Microsoft\Non-Driver SigningをBIN:00に設定することにより、ドライバー署名に関係なくドライバーをインストールするようにWindowsを設定します。

    • タスクバーと通知領域を表示する必要があるので、NTUSERをマウントし、\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2を編集して9番目のバイトを設定し、ビット0がオフでビット1がオンになるように、最上部をオンにして自動非表示をオフにします(0x7Aが表示されます) 最大情報 )。また、PCMagの TrayManager などのその他のタスクバー統合/操作プログラムを無効にします(ユーティリティの販売を開始する前に取得した可能性があります)。
    • ソフトウェアハイブをマウントし、起動時に.BATファイルを実行する自動実行エントリを追加します(理由もなく、私はC:\t\j.BATと呼んでいます)。これで、直接入力することなく、Windowsに簡単に操作を実行させることができます。確かに、別のOSへの再起動、バッチファイルの変更、およびWindowsを再起動して変更を加える必要がありますが、Windowsで何もする方法がないよりはましです。 ;-)(単に削除するのではなく、コメント化することができます。)バッチファイルの最後にコマンドを追加して、Windowsを再起動します(例:shutdown -t 10 -r)。それを忘れないでください。そうしないと、リセットボタンを押す必要があります。

    • バッチファイル(例:j.bat)で、.REGファイルのインポートなどの特定のアクションを実行します(バッチファイルの場合と同様に、別のOSではオフラインで編集できます)。バッチファイルでデバイスマネージャーを実行し、ウィンドウを最大化して( Nircmd などのツールを使用)、ハードウェアの現在の状態を表示する機会を自分に与えます。 ( QRes のようなコマンドラインツールを使用して、解像度をビデオドライバー(この時点では汎用VGAアダプターである可能性があります)で可能な最大に設定します。例:1024x768。) .DLLファイルを登録して、いくつかの問題、特にWindows Updateに関連する問題を修正します。

    • バッチファイルを迅速かつ熱狂的に実行したくないので、スクリプトの実行を一時停止するために、指定された秒数だけ一時停止できるコマンドラインツールを取得する必要があります。いいえ、pauseコマンドは適切ではありません続行するにはキーを押す必要があるため。 (私は何年も前に書いたプログラムを使用しましたが、インターネット上で利用できるものはたくさんあります。あるいは common hack を使用するだけです。)

    • HotkeyMasterWinMacroMacroMakerAutoHotkeyAutoItのようなマクロレコーダー/スクリプトアプリを入手します。 ! など。必要なキーボードまたはマウスのアクションを実行するように設定します(この方法では、実際に使用可能な入力デバイスがなくてもWindowsで「実行」できます)。タイトルやクラス、コントロールによって特定のウィンドウまたはダイアログボックスを検出し、それに応じて特定のマウスクリックまたはキーを押すように設定する必要があります。たとえば、ドライバーの確認ダイアログを自動的に検出し、NextまたはContinueボタンをクリックするようトリガーできます。 (マクロアプリが.BATファイルではなく起動時に実行されるように設定し、Windowsがハードウェアを検出してドライバーのプロンプトを表示するまでに実行されるようにします。または、 startコマンドを使用してバッチファイルをブロックし、バッチファイルが終了しないためブロックされないようにします。
    • 必要なシステムファイルがすべて揃っていることを確認します。 (バッチファイル経由で)sfc /scannowを実行します。 WindowsにCD/DVDドライバーがインストールされていると仮定して、Windowsディスクをドライブに挿入してください。オフライン中に、不足しているファイルを手動でコピーすることもできます。たとえば、XPの最後のバックアップからすべてのファイルをコピーし、存在するファイルをnotに上書きするように指定しました。このようにして、不足しているファイルが復元されました(特に次のディレクトリにあります)。

      • C:\ Windows
      • C:\ Windows\INF
      • C:\ Windows\Driver Cache
      • C:\ Windows\ServicePackFiles
      • C:\ Windows\System32
      • C:\ Windows\System32\dllcache
      • C:\ Windows\System32\Drivers

      • (また、次のハードウェアインストールに関連しないディレクトリをたまたま復元して、ついにそれが再び機能するようになりました。偶然ですか?わかりません。)

      • C:\ Windows\Assembly
      • C:\ Windows\Microsoft.NET
      • C:\ Windows\WinSxS
      • C:\ Windows\Help
      • C:\ Windows\System32\WBEM

      • (実際には、C:\ Windows\System32\CatRoot *を削除または名前変更したい場合があります)

    • C:\ Windows\INFにあるすべての.PNFファイルを削除します。 Windowsは、次にドライバーをインストールする必要があるときに、既存の.INFファイルからそれらを再構築します(この時点では、まだすべての起動時です)。これは、ファイルの最新のコピーを取得して使用するために、ページが正しく表示されていないときにブラウザーのキャッシュをクリアするのと同じです。

    • 最後の手段として、 get およびMicrosoftツール DEVCON を使用して特定のデバイスを削除し、Windowsがハードウェアを最初からインストールできるようにします。ただし、最初に、コマンド(バッチファイル経由)DEVCON findall * > C:\t\devcon.logを実行して、すべてのハードウェアとそれに対応するIDのリストをダンプします。これにより、削除するハードウェアの適切なカスタムリストを作成できます。削除する必要のあるデバイスには次のものがあります。

      • 「* ACPI *」
      • 「USB\ROOT_HUB *」
      • 「SERENUM\MOUSE *」
      • VEN_8086
      • 「HID *」
      • 「* TUNMP *」
      • 「PCI\VEN_1102 *」
      • 「PCI\VEN_1033 *」
      • 「PCI\VEN_1011 *」
      • 「PCI\VEN_1186 *」
      • 「PCI\VEN_11AB *」
      • 「PCI\VEN_1274 *」
      • 「PCI\VEN_5333 *」

      • (これらは、プロセッサ、ポート、バス、入力デバイス、ネットワークカード、ハードドライブ、光学ドライブなどの主要なマザーボード関連デバイスです。)


ご覧のとおり、システムドライブを新しいシステム(マザーボードの読み取り)にプランクし、その必要性を避けたい場合、Windowsを再度実行するのは(当然のことですが)とてつもない苦痛です。再インストールします。入力方法がないと非常に難しくなりますが、不可能ではありません。それは多くの時間、努力、忍耐、ツール、細部への注意、そして注意が必要ですが、可能です報酬と(完全に再インストールすることで、時間をかけて行われた何千ものカスタマイズを知っている人を失うことになります)。

幸いなことに、起動して再インストールするだけの準備ができていないので、ようやく機能させることができました。これで、Outlook Expressを再び使用できるようになり(アカウントに蓄積された5,000通ほどの電子メールをダウンロードして削除できるようになりました)、インストール済みの古き良きVS2003のコピーで再度プログラミングを行うことができます。 (私はWindows 7に慣れていなかったというわけではありません。実際にはしばらくの間、XPで不思議に感じましたが、1年間寮に引っ越してから、あなたの家に戻ったような気分になりました。自宅の寝室。)

10
Synetech

私はここから私の答えを共有します。スクリプトはMSFNサイトに正しく表示されます: http://www.msfn.org/board/topic/49514-disable-found-new-hardware-wizard/?do= findComment&comment = 1132792

AutoIt3スクリプトを作成しました https://www.autoitscript.com/site/autoit/downloads/ これは、すべての新しいハードウェアで続行しますWizard署名されていないドライバーを受け入れるウィンドウ、WinXP CDプロンプトをキャンセルし、複数のオプション(インターネットへの接続など)をスキップして、マウスとキーボードを検出してインストールします。コンパイルされたautoitスクリプトEXEを「スタート」(「スタートメニュー」内)フォルダにコピーして、スクリプト文字列はローカルのWindows言語に適合させる必要があります。おそらくAlt-LETTERの組み合わせもいくつかあります。私のサンプルはスペイン語のWinXPで動作します。マウスとキーボードが機能した後、スクリプトを削除する必要があります(または他のフォルダに移動):

$asistente= "Asistente para hardware nuevo encontrado" ;"Found New Hardware Wizard"
$instalacion= "Instalación de hardware"
$archivos= "Archivos necesarios"
$cambio= "Cambio de configuración del sistema"

while 1
sleep(200)

if WinExists( $cambio) then
   WinActivate( $cambio)
   sleep(200)
   Send("!n")        ; (press Alt-n)
endif

if WinExists( $instalacion) then
   WinActivate( $instalacion)
   sleep(200)
   $text=WinGetText( $instalacion)
   if StringInStr( $text, "El software que está instalando para este hardware") then ;"The software..."
     Send("!c")
    endIf
;  MsgBox($MB_OK, "Autoit Status", $text & stringinstr( $text, "está"), 2 )  ;  sleep(2000)
endif

if WinExists($archivos) then
   WinActivate($archivos)
   sleep(200)
   $text=WinGetText( $archivos)
   if StringInStr( $text, "Se necesita el archivo") then
       ControlClick( "Archivos necesarios", "", "[ID:2]" )
    endIf
endif

if WinExists( $asistente) then
   WinActivate( $asistente)
   sleep( 200)
   $text=WinGetText( $asistente)

   if StringInStr( $text, "Desea que Windows se conecte a Windows Update") then ;"Can Windows connect to Windows Update to search for software?"
;     ControlCommand( $asistente, "", "[ID:8104]", "Check", "")
     sleep(150)
;     ControlClick( $asistente, "", "[ID:12324]")
     Send("!n")
     sleep(100)
     Send("!t")
     sleep(250)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "Este asistente le ayudará a instalar software para:") then ;"This wizard"
     sleep(150)
     Send("!t")
     sleep(250)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "No se puede instalar este hardware") then ;"Cannot Install this Hardware"
     ControlCommand( $asistente, "", "[ID:1030]", "UnCheck", "")
     sleep(200)
     ;ControlClick( $asistente, "", "[ID:12325]")
      Send("{ENTER}")
     sleep(200)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "desea que haga el asistente?") then ;"What do you want the wizard to do?"
   ControlCommand( $asistente, "", "[ID:1049]", "Check", "")
   sleep(200)
   ControlClick( $asistente, "", "[ID:12324]")
   sleep(200)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "Se recomienda que se conecte a Internet para que el asistente") then
   ControlCommand( $asistente, "", "[ID:1065]", "Check", "")
   sleep(200)
   ControlClick( $asistente, "", "[ID:12324]")
   sleep(200)
   endif

   $text=WinGetText( $asistente)
   if StringInStr( $text, "Finalizar para cerrar") then ;"Click Finish to close the wizard."
   ControlClick( $asistente, "", "[ID:12325]")
   sleep(250)
   endif
endif

wend 
1
isidroco

ウィザードは、一致するドライバーがシステムドライバーパスにない場合にのみポップアップ表示されます。 technet によると、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\DevicePath offlineを変更して、ポップアップする前にドライバーを自動検索するためにドライバーのinfsを含むフォルダーを追加する必要があります。ウィザード。

それが機能しない場合は、すべてのドライバーを統合して再インストールする方が簡単な場合があります。

0
SilverbackNet

この問題については、起動時にTeamviewerを追加し、不足しているハードウェア(/ wキーボードとマウス)をインストールしました。

0
Nemis