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


9

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

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

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

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

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

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

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

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

どうもありがとう。


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

代替テキスト

代替テキスト


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

回答:


10

金曜日にようやくWindows XPが新しい古いシステムで動作するようになりました!ウフー!(たったの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で、ドライブ/パーティションの設定いることを確認しSystemBootDevice、それがために使用よりも、システムドライブは今、私の場合には(別のドライブ/パーティション上にあってもよいので、[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet00 * \コントロール]でが正しく設定されています(r)diskは以前は0でしたが、新しいドライブのために1になりました)。

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

      • Runキーについて#は、コマンドの最初にある文字または何かを単純に投げることができます。このようにすると、Windowsは有効なファイルではないため実行できなくなり、無視されます。

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

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

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

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

    • タスクバーと通知領域を表示したいので、一番上をオンにして、NTUSERをマウントして自動非表示を\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2オフにし、ビット0がオフでビット1がオンになるように編集して9番目のバイトを設定します(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コマンドは適切ではありません。続行するにはキーを押す必要があります。(私は何年も前に書いたプログラムを使用しましたが、インターネット上で利用できるものはたくさんあります。または一般的なハックを使用するだけです。)

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

      • 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ファイルからそれらを再構築します(この時点では、まだすべての起動時です)。これは、ファイルの最新のコピーを取得して使用するために、ページが正しく表示されていないときにブラウザーのキャッシュをクリアするのと似ています。

    • 最後の手段として、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 *」

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


あなたは、それがの(当然ながら)見ることができるように巨大な新しいシステム(読みマザーボード)にあなたのシステムドライブをplunkし、再インストールすることを避けるためにしたい場合は、Windowsが再び動作させるには痛みを。入力方法がないと、非常に難しくなりますが、不可能ではありません。それには多くの時間、労力、忍耐力、ツール、細部への注意、および注意が必要ですが、それ可能であり、報酬(完全な再インストールを行うため、時間の経過とともに何千ものカスタマイズが行われたかを誰が知っているかを失うことになります) )価値があります。

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


1

ここから私の回答を共有します。スクリプトは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/作成しましたこれにより、すべての新しいハードウェアウィザードウィンドウが署名されていないドライバーを受け入れ、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 

適切なフォーマットを使用せずに回答を単純にコピーアンドペーストしないでください。フォーマットを修正するのは非常に簡単なので、この回答はここに表示されます。
cascer1 16

申し訳ありませんが、cascer1、私は自分でそのコードを作成しました。最後にIFのインデントが抜けていることを除いて、フォーマットは私にとっては問題ありません。
isidroco

2011年にAutoIt(私の場合はAutoHotkey)を使い始めたかどうか思い出せません。そうでなければ、間違いなくそれを使いました。👍
Synetech

0

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

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


それは有望に見えましたが、残念ながら設定はすでに正しいです(%SystemRoot%\inf)。実際、のエントリCurrentVersion\Setupも良好です(DriverCachePathおよびのようにInstallation Sources)。私も確かにあるファイルと判断しているINFDriverCacheDLLCacheすべての存在とを占めています。Windows ドライバーを見つけてインストールできるはずです(少なくとも、基本コンポーネントについては、ビデオカードなどがWindowsよりも新しい場合でもそうではありません)。ドライバーがなかったため、Windowsを入手できないようです。ポートまたは入力デバイスのドライバーを検出してインストールする
Synetech

多分あなたは彼らの注文をチェックしていませんか?これを読んでください。同様の問題に遭遇したようです。ハイブをマウントし、DevicePathエントリを並べ替えることで修正でき、Windowsが最初にキーボードとマウスを検出できるようになると思います。(3年後のフィードバック;))
Jet

0

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


2
それはそれを必要とする前にそれを以前にインストールしておくか、あるいはそれをインストールすることができるようにキーボードとマウスを使うことができるかのどちらかを必要とするでしょう。いずれにせよ、リモートアクセス良い考えかもしれませんが、このような状況では役に立ちません。
Synetech 2011

@Synetech、スクリプト作業で自動的にインストールできませんでしたか?
Pacerier、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.