Войти

Показать полную графическую версию : [решено] Запуск Inf файла из под VBS скрипта


O L E G
11-03-2012, 17:00
Подскажите как мне запустить 123.inf файл из под VBS скрипта автоматом

Iska
12-03-2012, 02:36
O L E G, для не исполняемых файлов нет понятия «запустить». Для них применимо понятие «исполнить глагол, привязанный к данному типу файлов». Для «*.inf» глаголы перечислены в «HKEY_CLASSES_ROOT\inffile\shell».

Предположим, что речь в «запустить 123.inf файл» шла о глаголе «Install» («&Установить»):
Option Explicit

Dim objShell
Dim objFolder
Dim objFolderItem

Set objShell = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace("E:\Песочница\0126")

If Not objFolder Is Nothing Then
Set objFolderItem = objFolder.ParseName("123.inf")

If Not objFolderItem Is Nothing Then
objFolderItem.InvokeVerb "Install"

Set objFolderItem = Nothing
Else
WScript.Echo "Can't find [123.inf] in [E:\Песочница\0126]"
End If

Set objFolder = Nothing
Else
WScript.Echo "Can't find [E:\Песочница\0126]"
End If

Set objShell = Nothing

WScript.Quit 0

Либо прочитать из реестра содержимое параметра «HKEY_CLASSES_ROOT\inffile\shell\Install\command\(Default)»:
%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1
и запускать «rundll32.exe» напрямую с параметром «<путь>\123.inf» самому.

O L E G
12-03-2012, 09:29
Большое спс, Хорошо когда есть такие люди)

O L E G
12-03-2012, 10:01
Появилась одна Проблемка для меня.
Скрипт и Inf файл находятся в одной папке, к примеру F:\Scripts\ на флешке, к подключению к разным компам буква меняется и VBS перестает находит inf файл.Возможно указать VBS путь, что бы он проверял только папку Scripts на наличие файла inf ?

Iska
12-03-2012, 10:25
O L E G, следующий скрипт будет искать одноимённый файл «*.inf», расположенный в той же папке, что и сам скрипт (например: «e:\Temp\123.vbs» будет пытаться найти «e:\Temp\123.inf»):
Option Explicit

Dim strFolder
Dim strFile

Dim objShell
Dim objFolder
Dim objFolderItem

With WScript.CreateObject("Scripting.FileSystemObject")
strFolder = .GetParentFolderName(WScript.ScriptFullName)
strFile = .GetBaseName(WScript.ScriptName) & ".inf"
End With

Set objShell = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(strFolder)

If Not objFolder Is Nothing Then
Set objFolderItem = objFolder.ParseName(strFile)

If Not objFolderItem Is Nothing Then
objFolderItem.InvokeVerb "Install"

Set objFolderItem = Nothing
Else
WScript.Echo "Can't find [" & strFile & "] in [" & strFolder & "]"
End If

Set objFolder = Nothing
Else
WScript.Echo "Can't find [" & strFolder & "]"
End If

Set objShell = Nothing

WScript.Quit 0

O L E G
12-03-2012, 11:19
ОК спасибо все работает




© OSzone.net 2001-2012