Installer le pilote inf avec VBScript sur Windows 7

J’essaie d’écrire un script VBS qui installe un adaptateur USB / Ethernet sur Windows 7.

J’ai un fichier .INF pour cet appareil.

J’ai d’abord essayé:

Dim WshShell, res Set WshShell = WScript.CreateObject("WScript.Shell") res = WshShell.Run(WshShell.ExpandEnvironmentSsortingngs( "%SystemRoot%" ) & "\System32\InfDefaultInstall.exe "" C:\Users\Me\Driver.inf """, 1, True) 

res égalé 2.

Ensuite, j’ai cherché une autre façon de faire et j’ai trouvé :

 Dim WshShell, res Set WshShell = WScript.CreateObject("WScript.Shell") res = WshShell.Run(WshShell.ExpandEnvironmentSsortingngs( "%SystemRoot%" ) & "\System32\rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 ""Driver.inf""", 1, True) 

res est égal à 0 mais j’ai une erreur popup Installation failed .

Qu’est ce qui ne va pas avec mon code? Pour mémoire, le script est lancé avec les droits d’administration.

MODIFIER

J’ai essayé d’exécuter la première commande directement dans prompt et obtenu: The inf file you selected does not support this method of installation. .

Rien ne se passe avec la seconde commande dans l’invite.

C’est très étrange car je peux installer le pilote “manuellement” lorsque je lance le gestionnaire de périphériques et sélectionnez le fichier inf (avec un avertissement: Windows can't verify the publisher of this driver software. ):

Sécurité Windows: Windows ne peut pas vérifier l'éditeur de ce pilote

Une fois le pilote installé, la propriété du programme d’installation de la classe affiche NetCfgx.dll,NetClassInstaller . Pourrait-il être utilisé?

J’ai aussi essayé avec devcon sans succès (le programme retourne devcon.exe a échoué).

Que diriez-vous de cette façon:

1) Si vous utilisez “Windows 7”, pourquoi ne pas tirer parti de l’utilitaire de pré-stockage de pilotes intégré au système d’exploitation? W7 est livré avec un utilitaire de pilote appelé “PNPUTIL”. L’émission d’une commande en tant que telle appenda les pilotes:

 PNPUTIL -a "X:\Path to Driver File\Driver.inf" 

Cela traitera le fichier INF et copiera le fichier CAT / SYS / INF (ainsi que toute DLL, EXE, etc.) dans le dossier “DriverStore” … au même endroit que Windows stocke tous les pilotes intégrés prêts pour le plug-and-auto. Instalaltion de jeu.

2) Si ce n’est pas une option pour vous, recherchez “DPInst.exe” (ou “DPInst64.exe” pour les systèmes 64 bits). Celles-ci sont disponibles dans le PDK Windows (disponible gratuitement auprès de Microsoft) et traiteront tous les fichiers INF à l’emplacement où vous avez placé le fichier et tenté de les préparer. Cette méthode essaie de copier des fichiers vers les emplacements “Drivers”, “CatRoot” et “INF” qui ne sont pas aussi fiables … et parfois il est impossible de copier les DLL requirejses dans les dossiers “System32”, etc … mais à 99% du temps (pour les pilotes simples) cela fonctionne juste. Je peux m’arranger pour vous les envoyer si vous ne les trouvez pas.

Depuis que j’ai trouvé l’option (1) ci-dessus, c’est mon meilleur ami. J’utilise l’option 2 pour intégrer toutes les imprimantes et scanners USB Canon sur nos images de base, etc. Je sais donc que cela fonctionne aussi.

J’ai eu le même problème et l’ai résolu en utilisant explicitement la version ASCII du point d’entrée InstallHinfSection :

 res = WshShell.Run("%Comspec% /C %SystemRoot%\System32\rundll32.exe SETUPAPI.DLL,InstallHinfSectionA DefaultInstall 132 ""Driver.inf""", 1, True) 

Il y a sans doute une meilleure solution (comme faire allusion au moteur de script dont la saveur unicode / ASCII doit être utilisée).

J’utilise également le système EN-US, donc cette solution peut échouer sur des environnements plus exotiques.

Essaye ça:

 res = WshShell.Run("%Comspec% /C %SystemRoot%\System32\rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 ""Driver.inf""", 1, True)