[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
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 *
Вложение


Последний раз редактировалось: nikzzzz (2020-05-24 09:05), всего редактировалось 10 раз(а)

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3610
  • Репутация:127

    [+] [-]
Раз "не прокатило" с переменными окружения, можно ввести, например, /xstatus, который будет возвращать цифирьки состояния (или битовую маску, не знаю, как удобнее).

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
dialmak
А зачем нужны записи в реестр?
zDrvInst /install сам их сделает.
Проверки очень многие лишние.
При запуске TBIMount сам стартует драйвер.
То-есть можно обойтись минимумом
zDrvInst "tbimount"  /uninstall
zDrvInst "tbimount" ".../tbimount.sys" /install

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
Ander_73,
62426можно ввести, например, /xstatus, который будет возвращать цифирьки
Так все равно цифирьку эту For'ом придется вытаскивать, смысл?

[Цитировать]

    dialmak
  • 2607
  • Стаж: 8 лет 2 месяца
  • Сообщений: 842
  • Репутация:40

    [+] [-]
nikzzzz,
zDrvInst /install сам их сделает.
А я об этом откуда знаю? Если в описании не указано - я решил, что нет такого.
А если он добавляет, то нужно озвучить шаблон.
Попробую упростить - отпишусь..
Увидел непонятку при тестировании.
Если путь к драйверу не тот, то все равно рапортует, что мол все ОК
Если в скрипте заменить строчку на
"%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

Переписал реестр. Он что не проверяет наличие файла???


Последний раз редактировалось: dialmak (2019-02-19 21:22), всего редактировалось 1 раз

[Цитировать]

    dialmak
  • 2607
  • Стаж: 8 лет 2 месяца
  • Сообщений: 842
  • Репутация:40

    [+] [-]
Так все равно цифирьку эту For'ом придется вытаскивать, смысл?
Да вроде проблем нет, в код возврата лепить бит.
0000 - одно
0001 - второе
0010 - третье
0011 - второе и третье
и т.д.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3610
  • Репутация:127

    [+] [-]
62428Так все равно цифирьку эту For'ом придется вытаскивать, смысл?
Не, как ErrorLevel возвращать, разумеется.
Смысл такой: /status возвращает success/fail (errorlevel 0/1)
И если success, то xstatus вернет расширенное состояние.

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
62429Он что не проверяет наличие файла???
Не проверяет, но запустить его будет невозможно.
62432Да вроде проблем нет, в код возврата лепить бит.
Я уже говорил, что не хочу нарушать идеологию, 0 - Sucess, not 0 - Error

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
62433И если success, то xstatus вернет расширенное состояние.
Куда и в каком виде?

[Цитировать]

    dialmak
  • 2607
  • Стаж: 8 лет 2 месяца
  • Сообщений: 842
  • Репутация:40

    [+] [-]
nikzzzz,
Не проверяет, но запустить его будет невозможно.
Но при этом пишет 0 - Sucсess !!! Это нормально?
Зачем тогда читать код возврата, если он врет..

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
dialmak,
62436Но при этом пишет 0 - Sucсess !!! Это нормально?
Положи .sys файл в нужное место, и сервис будет работать!

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3610
  • Репутация:127

    [+] [-]
62435Куда и в каком виде?
62433как ErrorLevel возвращать, разумеется.
62426будет возвращать цифирьки состояния (или битовую маску, не знаю, как удобнее)

[Цитировать]

    dialmak
  • 2607
  • Стаж: 8 лет 2 месяца
  • Сообщений: 842
  • Репутация:40

    [+] [-]
nikzzzz,
Положи .sys файл в нужное место, и сервис будет работать!
Хм.. неужели сложно сделать проверку и выдать, что файла не существует или просто errorlevel=1 или к примеру 2
Получается, что проверить создание можно только после старта, это неудобно..

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
dialmak
Не сложно, просто не делал эту проверку, сама api функция ее оказывается не делает.
Добавлю, но это все равно не даст гарантии, что сервис будет работать, это можно выяснить только запустив его.

[Цитировать]

    dialmak
  • 2607
  • Стаж: 8 лет 2 месяца
  • Сообщений: 842
  • Репутация:40

    [+] [-]
nikzzzz, Немного упростилось
@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
К сожалению он тоже не умеет удалять драйвер который используется..

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
dialmak,
62441К сожалению он тоже не умеет удалять драйвер который используется..
Попробовал, удалить можно, но большая вероятность синьки, а это не дело.

Страница 4 из 5


Показать сообщения:    

Текущее время: 26-Апр 17:34

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы