Войти

Показать полную графическую версию : Не добавляется в реестр инфа через bat + smart install maker


antoshka333
16-07-2014, 22:40
Собственно сабж, имеем на выходе батник с 1й строкой для теста

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v USerinit /t REG_SZ /d "C:\Windows\System32\userinit.exe, С:\1.vbs" /f
pause

пауза, чтоб видеть ошибки там на всякий случай. запускаю руками - все идеально, в regedit показывает что добавлена запись.
Запускаю smart install maker, добавляю .bat в него, компилирую, при этом стоит галочка "требовать права администратора".
При запуске батник запускается, мы видим искомую запись что импорт реестра успешен, а на самом деле в regedit пусто. Я впервые вижу такой глюк. Чтобы руками норм было а через инсталлятор писало что добавлено а по факту нет..... пытался я и в инсталляторе сделать непосредственно в разделе реестр сделать - тоже самое, добавлял и в execute shell раздел строку - бесполезно. антивирусов и фаерволов не стоит.
Запуская же мышкой все работает ... куда копать?

Iska
17-07-2014, 06:27
antoshka333, зачем Вам надо писать что-то в «Userinit»?

Shtirliz8
17-07-2014, 21:56
Добрый вечер. Как раз столкнулся с такой же проблемой (я в юзер инит не лезу :D )
Батник примерно такого содержания:

reg add "HKLM\SOFTWARE\Some_program" /ve /t REG_SZ /d RABOTAY /f
pause


Выводит что операция успешно завершена, но в реестр запись не добавляется и не перезаписывается, в случае существования. Причем если скопировать 1ю строку в командную строку, то все работает. И даже еще интереснее: если вызвать из командной строки этот же самый батник (start C:\1.bat), то все работает. Эта проблема наблюдается на висте, на xp все работает, семерку не пробовал.

Shtirliz8
17-07-2014, 22:32
Заработало после, добавления в начале
cd C:\Windows\SysWOW64
Как я понял запускалась 32х битная версия reg.exe, которая отрабатывала вот таким вот странным образом.

Iska
18-07-2014, 00:51
Shtirliz8, может, просто не надо вызывать пакетный файл и командную строку из-под x86-оболочки?!

Shtirliz8
18-07-2014, 01:31
Iska, но я же просто запускаю батник в экслорере, а он получается обрабатывается x86 cmd.exe. Да и "пуск->выполнить->cmd" так же приводит к запуску того же system32\cmd.exe. Может быть я чего-то не понимаю, но по моему не очень логичное поведение системы.
В общем я понял, что пишу какую-то ерунду и ушел курить статьи

Iska
18-07-2014, 06:52
Iska, но я же просто запускаю батник в экслорере, а он получается обрабатывается x86 cmd.exe. Да и "пуск->выполнить->cmd" так же приводит к запуску того же system32\cmd.exe. »
Тогда не знаю, в чём дело.

Может быть я чего-то не понимаю, »
Я тоже ;).

gora
18-07-2014, 13:25
Заработало после, добавления в начале »
Оно и до этого работало. В х64 системе есть два reg.exe (х86 и х64). Некоторые разделы реестра также "разделены" на две группы (х86 и х64). Каждый из reg.exe может "добраться" только до соответствующей ему по разрядности группы в реестре. Проверяли результат работы Вы наверное regedit.exe, коих тоже два (х86 и х64). Так вот если пишущий reg.exe не соответствовал читающему regedit.exe по разрядности, то Вы можете и не увидеть результата.

Shtirliz8
21-07-2014, 09:59
gora, спасибо за исчерпывающий ответ

Некоторые разделы реестра также "разделены" на две группы (х86 и х64)
А программы, как я понял, обращаются к реестру Win-Api функции, и направляются системой в соответствующую ветку в зависимости от их разрядности?

gora
21-07-2014, 12:53
направляются системой в соответствующую ветку в зависимости от их разрядности? »
Угу.




© OSzone.net 2001-2012