(e-mail address removed) said in
Yet another update. I found an article that talks about
using the SETUPAPI.LOG file to troubleshoot problems of
this nature. This file is about as useless as the Add New
Hardware Wizard in telling me where the problem lies, but
it did show one additional piece of information. The
error displayed in this file when the installation fails
is:
E154: Class installer failed. Error 2: System cannot
find the file specified.
I am not familiar with what the "Class installer" is, but
does this help out further?
Okay, this can get hairy and a last resort. As always, backup the
entire registry (export it) or just the keys mentioned so you can
restore.
The devices get enumerated and recorded under:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\
For example, the nForce network controller is under the following
subkey:
PCI\VEN_10DE&DEV_0066&SUBSYS_1C00147B&REV_A1
I believe the "VEN" key's value is unique to each hardware maker.
Notice the ClassGUID value name under this subkey. All hardware gets a
GUID (global <something> identifier) and the class is used to link to
the hardware. The ClassGUID (for me) was
4D36E972-E325-11CE-BFC1-08002BE10318, so then I looked under:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
and found the subkey defining this class. The nForce network controller
(for me) was under:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11C
E-BFC1-08002bE10318}\0009
Notice the ComponentID value name has a value the same as the first part
of the "VEN" subkey name found under the Enum key. I also found this
ClassGUID listed under:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network
which seems to record the bindings to the connectoids you see listed
under Start -> Settings -> Network Connections. I have recently
reapplied the nVidia platform driver package and my "Local Area
Connection" connectoid disappeard to get replaced by a "Local Area
Connection 2" connectoid (so I'll have to play around here to see if I
can delete the defunct "Local Area Connection" and rename the newer
"Local Area Connection 2" back to just "Local Area Connection"; as I
recall, subsequent deletes of the hardware from Device Manager and
reinstall of drivers results in the postfix count getting incremented
rather than just replacing the old connectoid definition).
I would say to try to delete the "VEN" subkey under the ENUM registry
key so that the device is no longer defined. You'll probably also have
to delete the subkey for the nForce network controller under ClassGUID
registry key ("0009" as mentioned above, for me) but note the InfPath
value first. There may still be an .inf file around that defines this
hardware. You'll end up rebooting but Windows will find the INF file
still exists for this device and reuses the definitions from that INF
file instead of prompting you of where to find the drivers. Move,
rename, or delete the INF file specified in the InfPath value noted
before. In my case, it was oem3.inf (and is in C:\WINDOWS\inf). When I
looked inside this INF file, it looks to be only for use with the nForce
network controller device (the ClassGUID matched and was the only one
listed). In the "[Nvidia]" section was listed the
"PCI\VEN_10DE&DEV_0066" for the nForce network controller. A couple
other "VEN" keys are listed but they don't exist under my Enum\PCI key
(probably just different flavors of the same device).
I would first try deleting the hardware for the nForce network
controller and 1394 Net controll from Device Manager under the Network
devices category to see what of these keys, if any, get deleted from the
registry. Also delete the connectoid(s) for the nForce in Start ->
Settings -> Network. If not deleted, then I'd export/move and then
delete (the following are what I found on my system):
- Export and delete the registry keys:
HKLM\SYSTEM\CurrentControlSet\Enum\PCI\
Delete subkey: VEN_10DE&DEV_0066&SUBSYS_1C00147B&REV_A1
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-080
02bE10318}\
Delete subkey: 0009 (or whatever is used for you)
HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-0
8002BE10318}\
Delete subkey: (whichever is for your LAN connectoid)
- Move/rename the file:
C:\WINDOWS\inf\oem3.inf
There is also the IEEE1394 firewall connectoid definition so you might
want to go through the same above process to export and delete the
registry keys for it:
- Export and delete registry keys:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\V1394\
Delete subkey: NIC1394
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E3
25-11CE-BFC1-08002BE10318}\
Delete subkey: (whichever is for the 1394 connectoid)
I also found the subkeys for the connectoid under the registry key for
the DHCP configuration
(HKLM\SYSTEM\CurrentControlSet\Services\Dhcp\Parameters) but not sure if
you need to delete those (I will for the old defunct connectoid
definition that isn't available anymore after the 2nd install of the
drivers). Then try reinstalling the network driver.
Obviously all this is tricky and convoluted but starts by identifying
the Enum subkey (often a "VEN" key) to identify the device. That does
the lobotomy on Windows from knowing the device so you can do a fresher
reinstall but the INF file can sometimes cause Windows to use it to
perform an automatic install on the next reboot. All this is at your
own risk. Backup, backup, backup!