|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
|
.: NSIS - все вопросы :. часть 2.
|
|
Ветеран Сообщения: 1216 |
![]() Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
|
------- Отправлено: 12:02, 09-12-2012 |
|
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Всем доброго времени суток.
Столкнулся с двумя проблемами. В папке $WINDIR\System32\drivers\ хочу удалить файл .sys. В семерке этот файл спокойно удаляется с помощью макроса и команды: Скрытый текст
В десятке почему то не удаляется. Когда начал пробовать в десятке удалить его вручную, то он пишет, что занят процессом. Но IObit Unlocker показывает, что никаким процессом он не занят и командой "разблокировать и удалить" спокойно его удаляет. Вот такой вопрос, имеется ли в nsis команда типа "снять все атрибуты, разблокировать и удалить", чтобы удалялся в десятке файл, как это делает IObit Unlocker? И вторая проблема. Имеется батник - это вполне рабочий генератор случайного 32 значного кода с записью в нужную область реестра: Скрытый текст
@echo off
cls
@echo.
@echo.
call :randomizeSequence 32 sequence
@echo sequence = '%sequence%'
REG ADD HKLM\Software\Test/v TestId /t REG_SZ /d %sequence% /f
exit /b
:randomize
set MIN=%1
set MAX=%2
set /A %3=%MIN% + (%MAX% - %MIN% + 1) * %random% / 32768
exit /b
:fillArray
set "array[%cnt%]=%1"
set /a cnt +=1
exit /b
:initialRandomize
if defined ALREADYINIT (exit /b)
set ALREADYINIT=true
for %%a in ( 1 2 3 4 5 6 7 8 9 a b c d e f g) do (
call :fillArray %%a
)
exit /b
:accumulate
call :randomize 1 15 index
call set "char=%%array[%index%]%%"
call set "%dst%=%%%dst%%%%char%"
exit /b
:randomizeSequence
set len=%1
set dst=%2
call :initialRandomize
for /L %%a in (1 1 %len%) do (
call :accumulate %%a
)
exit /b
Помогите, пожалуйста сделать то же самое, что в батнике только кодом. |
|
Отправлено: 06:15, 12-06-2020 | #2441 |
|
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата inco1:
Если "IObit Unlocker показывает, что никаким процессом он не занят и командой "разблокировать и удалить" спокойно его удаляет", то он, скорее всего, чего-то не договаривает (дабы не перегрузить пользователю мозг технической информацией ). Цитата inco1:
Скрытый текст
макрос ${GetRandomHexStringG} OUTPUT LENGTH
Запишет в переменную OUTPUT строку длиной: LENGTH символов для 1 <= LENGTH <= 32 32 символа для других значений !include "Util.nsh"
!define GetRandomHexStringG '!insertmacro GetRandomHexStringG'
!macro GetRandomHexStringG OUTPUT LENGTH
Push ${LENGTH}
${CallArtificialFunction} GetRandomHexStringG_
Pop ${OUTPUT}
!macroend
!macro GetRandomHexStringG_
Push $0 ; result string
Exch
Exch $1 ; result chars count
Push $2 ; guid string
Push $3 ; length of guid string
Push $4 ; counter
Push $5 ; temp / char
StrCpy $0 ''
System::Call 'ole32::CoCreateGuid(g .r2)'
StrLen $3 $2
IntOp $3 $3 - 1 ; to skip last curly bracket
StrCpy $4 1 ; to skip first curly bracket
Loop:
IntCmp $4 $3 ExitLoop 0 ExitLoop
StrCpy $5 $2 1 $4
IntOp $4 $4 + 1
StrCmp $5 '-' Loop
StrCpy $0 $0$5
IntOp $1 $1 - 1
IntCmp $1 0 ExitLoop
Goto Loop
ExitLoop:
Pop $5
Pop $4
Pop $3
Pop $2
Pop $1
Exch $0
!macroend
|
||
|
Отправлено: 17:54, 12-06-2020 | #2442 |
|
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz,
Цитата:
|
|
|
Отправлено: 21:27, 12-06-2020 | #2443 |
|
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 22:32, 12-06-2020 | #2444 |
|
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz, Спасибо, буду пробовать.
PS. Всё отлично работает. Правда буквы заглавные, но это не критично. Спасибо. |
|
Последний раз редактировалось inco1, 12-06-2020 в 23:01. Отправлено: 22:39, 12-06-2020 | #2445 |
|
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата inco1:
Вот такой вариант генератора позволяет задавать регистр
!define GetRandomHexStringRL '!insertmacro GetRandomHexStringR x'
!define GetRandomHexStringRU '!insertmacro GetRandomHexStringR X'
!macro GetRandomHexStringR CASE OUTPUT LENGTH
Push ${LENGTH}
Push ${CASE}
${CallArtificialFunction} GetRandomHexStringR_
Pop ${OUTPUT}
!macroend
!macro GetRandomHexStringR_
Exch $0 ; 'x'/'X'
Exch
Exch $1 ; length
Push $2 ;
Push $3 ;
Push $4 ;
Push $5 ;
Push $R0 ; CSP handle returned by CryptAcquireContext()
Push $R1 ; buffer address for data generated by CryptGenRandom()
System::Alloc 32
Pop $R1
System::Call "advapi32::CryptAcquireContext(*i.R0, i0, i0, i1, i0x40)"
System::Call "advapi32::CryptGenRandom(iR0, i32, iR1)"
System::Call "advapi32::CryptReleaseContext(iR0, i0)"
System::Call "*$R1(&i4.r2, &i4.r3, &i4.r4, &i4.r5)"
System::Free $R0
StrCpy $R0 "%08$0"
IntFmt $2 $R0 $2
IntFmt $3 $R0 $3
IntFmt $4 $R0 $4
IntFmt $5 $R0 $5
StrCpy $0 $2$3$4$5 $1
Pop $R1
Pop $R0
Pop $5
Pop $4
Pop $3
Pop $2
Pop $1
Exch $0
!macroend
|
|
|
Отправлено: 07:20, 13-06-2020 | #2446 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить PM | Цитировать Для генерации стандартного 32 значного GUID, вроде как достаточно :
(${StrFilter} из WordFunc.nsh используем для смены регистра) |
|
Отправлено: 11:24, 13-06-2020 | #2447 |
|
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz,
Цитата:
Рано я обрадовался. Тот первый вариант, что только с верхним регистром отлично вносит 32 знака в реестр и на семерке и на десятке. Этот вариант с нужным мне нижним регистром вносит 32 знака в реестр только на семерке. На десятке вносит 32 нуля. MKN, А как я могу прикрутить ваш код , чтобы добавлялось 32 знака из цифр и нижнего регистра в нужную ветку реестра? |
|
|
Последний раз редактировалось inco1, 13-06-2020 в 13:33. Отправлено: 11:53, 13-06-2020 | #2448 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 14:41, 13-06-2020 | #2449 |
|
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать MKN,
Это вообще не то. Я же выложил батник, он генерирует такой код d2b7daaed38c3532d7d7aa6895fb96ge iglezz выложил код, который отлично генерит в верхнем регистре 848D8134AB514E70ABE491A6551B5E99 Потом он выложил код с нижним регистром, но который генерит только в семерке, но не хочет генерить в десятке - записывает ноли. Вы выложили код, который генерит следующее {AE68BE6F-43A2-1FB4-423D-D0C358720163} это не то, что я спрашивал. |
|
Отправлено: 15:08, 13-06-2020 | #2450 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
| [архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
| Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
| Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
| Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 | |
|