Войти

Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [99] 100 101

Iska
15-09-2019, 16:34
Какую версию Process Monitor Вы используете? »
https://i.imgur.com/zVlBOCv.png

Не могу найти »
https://i.imgur.com/GNqPMcc.png
и т.д.

На х64 системах изменения вносятся в [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon] »
Если Ваше приложение — x86, то, разумеется, на x64 системах оно будет обращаться из-за редиректа к x86-версии каталога %SystemRoot%\System32 — %SystemRoot%\SysWOW64, исполняя оттуда и интерпретатор команд, и консольный редактор реестра, что и приведёт к редиректу при обращении к реестру, и, соответственно, попытка записи в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon реально будет производиться в раздел HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon (как Вы и указали).

lSVl
15-09-2019, 20:40
и на операции с реестром. »
RegCreateKey достаточно?

Iska
15-09-2019, 21:03
lSVl, я тупо не помню, потому как через WinAPI очень давно с реестром работал. Я бы ещё добавил как минимум RegSetValue:
https://i.imgur.com/Izkcxq3.png

lSVl
15-09-2019, 21:12
Iska, подскажите пожалуйста как прописать одной строкой
@Echo Off
for /f "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where ^"NetConnectionStatus^=2^" get NetConnectionID /value')
netsh interface ip set address name="%%a" source=static address=192.168.0.1 mask=255.255.255.0 gateway=192.168.0.1
Exit
RunProgram="hidcon:cmd /c ..."

Iska
16-09-2019, 14:41
lSVl, тут должно быть более двух строк (к тому же, первая строка — с for /f — неполная), потому как нет никакой гарантии, что wmic.exe что-либо вернёт (например, нет ни одного экземпляра класса Win32_NetworkAdapter, который был бы «Connected»), а может оказаться и несколько (при этом в %%a попадёт значение из последнего экземпляра класса).

boss911
16-09-2019, 20:05
lSVl

Ваш код работать не будет. Я бы запускал в две и более строки, через батник, но, если вам так хочется/нужно одной строкой, я бы сделал так:
FOR /F "Tokens=2 Delims==" %%I IN ('WMIC path Win32_NetworkAdapter where ^"NetConnectionStatus^=2 and PNPDeviceID like ^'PCI\\VEN%%^'^" get NetConnectionID /value 2^>nul') DO IF "%%I"=="%%I" CALL NETSH interface ip set address name="%%I" source=static addr=192.168.0.1 mask=255.255.255.0 gateway=192.168.0.1 gwmetric=0 >nul
Но данный метод плох тем, что, если у вас несколько подключенных сетей (NetConnectionStatus=2), то для всех, по очереди, применятся ваши настройки, не проверял (нет возможности), но по идеи так. Еще, если NetConnection не будет получен, то NETSH не отработает. Так же тут применятся фильтрация по PCI устройствам.

Iska
16-09-2019, 22:56
boss911, а что даёт:
IF "%%I"=="%%I" »
?

не проверял (нет возможности), но по идеи так. »
Так.

boss911
17-09-2019, 00:15
а что даёт »
если NetConnection не будет получен, то NETSH не отработает. »
Припустим, что по какой-то причине имя подключения (значение NetConnectionID) не будет получено, соответственно переменная %%I не создастся, условие проверит наличие переменной через сравнение, нет переменной, то и NETSH (применение настроек) незачем выполнять. Просто IF DEFINED %%I в данном случае не работает.

Iska
17-09-2019, 01:30
boss911, спасибо, ясно. Я обычно делаю в несколько шагов:
for /f "..." %%i in (`wmic.exe ...`) do set sSomeVar=%%~i
if defined sSomeVar ( ... ) else ( ... )

lSVl
17-09-2019, 07:07
в несколько шагов »
Напишите пожалуйста полный код

boss911
17-09-2019, 16:30
lSVl »

В качестве рабочего примера:
@Echo off

SET IP_ADDR=192.168.0.1
SET MASK=255.255.255.0
SET GATEWAY=192.168.0.1

CHCP 1251 1>nul
REM SET "NetConnectionName=По желанию можно указать свое имя подключения и убрать 'REM' в начале этой строки"
CHCP 866 1>nul

IF NOT DEFINED NetConnectionName (
FOR /F "Tokens=2 Delims==" %%I IN ('WMIC path Win32_NetworkAdapter where ^"NetConnectionStatus^=2 and PNPDeviceID like ^'PCI\\VEN%%^'^" get NetConnectionID /value 2^>nul') DO SET "NetConnectionName=%%~I"
)
IF DEFINED NetConnectionName (
NETSH interface ip set address name="%NetConnectionName%" source=static addr=%IP_ADDR% mask=%MASK% gateway=%GATEWAY% gwmetric=0 >nul
) ELSE (
ECHO Network connection not found
PAUSE >nul
)

EXIT

Если у вас несколько подключенных/активных сетей (редкий случай), то настройки сработают только для того подключения, имя которого будет получено последним, а получает оно не по списку имен, так же имейте это ввиду.

habib2302
15-10-2019, 19:02
Доброе время суток. Помогите решить проблему. Антивируса нет, а встроенный отключен

https://c.radikal.ru/c05/1910/1f/0de448b039a5.png (https://a.radikal.ru/a14/1910/4c/c1a39acb9436.jpg)

https://drive.google.com/file/d/1yOh7LvPcG19CZ2q1aID15-dtAMxRMdOB/view?usp=sharing

timon45
06-11-2019, 11:04
habib2302, по твоим ссылкам, и выше в том числе
Этот файл нельзя открыть, так как он нарушает Условия использования.

Подробную информацию можно найти в Справочном центре Google Диска.

ARMAGIDON
26-12-2020, 13:57
Привет, а может она не весь архив распаковывать? Например в архиве две папки 86, 64 от зависимости разрядности выбирает нужную папку например в бат это бы выглядело так для папки Tor Browser_86 а папку Tor Browser_64 не трогаем
"%ProgramFiles%\7-Zip\7z.exe" x "%userprofile%\Desktop\firefox.exe" "Tor Browser_86\*" -o"D:\Tor Browser_86"
pause

Den30lv
06-01-2021, 21:21
ARMAGIDON,
В приложенной справке разделы: "Переменные модуля" и "Секции файла конфигурации".

tr011_tmn
26-01-2021, 09:07
Доброго времени суток коллеги.

Подскажите пожалуйста есть ли возможность исполняемому sfx передать внешний параметр SetEnvironment?
Что бы по умолчанию в файле конфигурации он был указан, но если требуется то при запуске sfx.exe его можно было переназначить.

sov44
26-01-2021, 17:14
Подскажите пожалуйста есть ли возможность исполняемому sfx передать внешний параметр SetEnvironment? »
Да.
name_sfx.exe -SetEnvironment="fVer=5.5.5"

regist
11-03-2021, 10:58
Нашёл тут на гите 1.7.1.3901. Собрал, вроде работает. »
Прошло два года с этого поста, а насчёт работы этих модулей только один пост на следующей странице. И в шапке ссылки на них до сих пор нет.
Есть какие-то нюансы/проблемы при использование этих модулей?

boss911
06-05-2021, 11:45
https://github.com/OlegScherbakov/7zSFX

Я так понял автор переехал на GitHub. Жаль, что теперь сюда не заходит.

На данный момент есть версия 7zsd_171_3901.7z (https://github.com/OlegScherbakov/7zSFX/tree/master/Archive) от 21.05.2018. Обновите шапку, пожалуйста.

regist
12-05-2021, 12:05
https://olegscherbakov.github.io/7zSFX/ - онлайн справка на англ, только похоже более устаревшая чем русская.




© OSzone.net 2001-2012