zDrvInst.exe - инсталляция драйверов и управление службами Синтаксис: zDrvInst.exe ServiceName [DriverFile] [DisplayName] [/install] [/uninstall] [/start] [/stop] [/status] [/nolog] ServiceName - имя сервиса DriverFile - файл драйвера DisplayName - если не указано, будет использоваться имя сервиса. /nolog - отключает лог Возвращает %ErrorLevel% последней выполненной комманды 0 - Sucess 1 - Error Примеры: zDrvInst.exe snapman "...\snapman.sys" /install - создать службу zDrvInst.exe snapman /start - запусить ее zDrvInst.exe snapman /status - показать информацию zDrvInst.exe snapman "...\snapman.sys" /install /start /status - то-же, но одной строкой. zDrvInst.exe snapman /uninstall - деактивирует службу и удаляет драйвер. /uninstall - комманда достаточно агрессивная, позволяет удалить службу, которая используется. К примеру, с помощью /uninstall можно использовать несовместимые версии Acronis без перезагрузки. VirusTotal - * X86 ** X64 *
Last edited by nikzzzz on 2020-05-24 09:05; edited 10 times in total
Раз "не прокатило" с переменными окружения, можно ввести, например, /xstatus, который будет возвращать цифирьки состояния (или битовую маску, не знаю, как удобнее).
dialmak А зачем нужны записи в реестр? zDrvInst /install сам их сделает. Проверки очень многие лишние. При запуске TBIMount сам стартует драйвер. То-есть можно обойтись минимумом
А я об этом откуда знаю? Если в описании не указано - я решил, что нет такого. А если он добавляет, то нужно озвучить шаблон. Попробую упростить - отпишусь.. Увидел непонятку при тестировании. Если путь к драйверу не тот, то все равно рапортует, что мол все ОК Если в скрипте заменить строчку на
"%TBIMountPath%\zDrvInst%xOS%.exe" "tbimount" "%SystemRoot%\%System32%\drivers\tbimount.sys" /install && echo The TBIMount service was installed successfully. || echo Error install TBIMount service.
(System32 на %System32%) то будет при запуске из c:\windows\syswow64\cmd.exe Переписал реестр. Он что не проверяет наличие файла???
Last edited by dialmak on 2019-02-19 21:22; edited 1 time in total
62428Так все равно цифирьку эту For'ом придется вытаскивать, смысл?
Не, как ErrorLevel возвращать, разумеется. Смысл такой: /status возвращает success/fail (errorlevel 0/1) И если success, то xstatus вернет расширенное состояние.
Положи .sys файл в нужное место, и сервис будет работать!
Хм.. неужели сложно сделать проверку и выдать, что файла не существует или просто errorlevel=1 или к примеру 2 Получается, что проверить создание можно только после старта, это неудобно..
dialmak Не сложно, просто не делал эту проверку, сама api функция ее оказывается не делает. Добавлю, но это все равно не даст гарантии, что сервис будет работать, это можно выяснить только запустив его.
@echo off setlocal enableextensions pushd "%~dp0" set "xOS=64" if /i "%PROCESSOR_ARCHITECTURE%"=="x86" if not defined PROCESSOR_ARCHITEW6432 ( set "xOS=" ) for /f "tokens=4 delims=[]." %%G in ('ver') do set wOS=%%G if %wOS% lss 10000 ( set wOS=7 ) else ( set wOS=10 ) set "System32=System32" if exist "%SystemRoot%\sysnative\cmd.exe" set "System32=sysnative" set "TBIMountPath=%cd%\TeraByte Drive Image Backup and Restore Suite\TBIView" if not exist "%TBIMountPath%\tbimount*.exe" set "TBIMountPath=%cd%" if not exist "%TBIMountPath%\tbimount*.exe" set "TBIMountPath=" ::TBIMount if not defined TBIMountPath goto :skipTBIMount "%TBIMountPath%\zDrvInst%xOS%.exe" "tbimount" /status | find.exe /i "running" >nul && if exist "%SystemRoot%\%System32%\drivers\tbimount.sys" ( echo The TBIMount service already running. goto :skipTBIMount ) :installTBIMount echo. echo Installing TBIMount driver... "%TBIMountPath%\tbimount%xOS%.exe" unmount * /q "%TBIMountPath%\zDrvInst%xOS%.exe" "tbimount" /uninstall if "%xOS%"=="64" if %wOS% EQU 7 copy /y "%TBIMountPath%\tbimount.x64.sys" "%SystemRoot%\%System32%\drivers\tbimount.sys" >nul if "%xOS%"=="" if %wOS% EQU 7 copy /y "%TBIMountPath%\tbimount.xp.sys" "%SystemRoot%\%System32%\drivers\tbimount.sys" >nul if "%xOS%"=="64" if %wOS% EQU 10 copy /y "%TBIMountPath%\tbimount.w10.x64.sys" "%SystemRoot%\%System32%\drivers\tbimount.sys" >nul if "%xOS%"=="" if %wOS% EQU 10 copy /y "%TBIMountPath%\tbimount.w10.sys" "%SystemRoot%\%System32%\drivers\tbimount.sys" >nul if not exist "%SystemRoot%\%System32%\drivers\tbimount.sys" ( echo File "%SystemRoot%\System32\drivers\tbimount.sys" not found. goto :skipTBIMount ) "%TBIMountPath%\zDrvInst%xOS%.exe" "tbimount" "%SystemRoot%\System32\drivers\tbimount.sys" /install && echo The TBIMount service was installed successfully. || echo Error install TBIMount service. :startTBIMount "%TBIMountPath%\zDrvInst%xOS%.exe" "tbimount" /start && echo The TBIMount service was started successfully. || echo Error starting TBIMount service. :skipTBIMount popd endlocal goto :eof
К сожалению он тоже не умеет удалять драйвер который используется..
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum