Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] reg.exe - как нежелательное имя для скрипта?

Ответить
Настройки темы
[решено] reg.exe - как нежелательное имя для скрипта?

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Изменения
Автор: semiono
Дата: 17-05-2010
Не могу понять в чём я ошибся, но скрипт запускается многократно вплоть до зависания.

Сам код ничего особенного не представляет:
Код: Выделить весь код
ProgressOn("MyProg...", "")
ProgressSet(100)

ShellExecute("MyProg.exe", "", @ProgramFilesDir & "\MyProg")
Sleep(3000)

$PID = ProcessExists("MyProg.exe")
ProcessClose($PID)


RegWrite("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe", "", "REG_SZ", @ProgramFilesDir & "\MyProg\MyProg.exe")
RegWrite("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe", "Path", "REG_SZ", @ProgramFilesDir & "\MyProg")

FileCreateShortcut(@ProgramFilesDir & "\MyProg\MyProg.exe", @UserProfileDir & "\SendTo\MyProg.lnk", @ProgramFilesDir & "\MyProg", "", "MyProg", @ProgramFilesDir & "\MyProg\Sam.ico", "", 0, @SW_SHOWNORMAL)
FileCreateShortcut(@ProgramFilesDir & "\MyProg\MyProg.exe", @ProgramsDir & "\MyProg.lnk", @ProgramFilesDir & "\MyProg", "", "MyProg", @ProgramFilesDir & "\MyProg\Sam.ico", "", 0, @SW_SHOWNORMAL)

$file = FileOpen(@SystemDir & "\Sam.cmd", 10)
FileWrite($file, '@start "" "' & @ProgramFilesDir & '\MyProg\MyProg.exe"' & ' %*' & @CRLF)
FileClose($file)

FileDelete(@ProgramFilesDir & "\MyProg\MyProg.exe")
Sleep(1000)

FileMove(@ProgramFilesDir & "\MyProg\Sam.bin", @ProgramFilesDir & "\MyProg\MyProg.exe", 9)
Sleep(1000)

ProgressOff()

ShellExecute("MyProg.exe", "", @ProgramFilesDir & "\MyProg")

Exit
Всё что мне приходит на ум, это название моего скрипта reg.exe, хотя лгика мне всёравное не ясна.

Ещё одна фитча, то что у меня reg.exe прописан на удаление в реестре в PendingFileRenameOperations,
хотя это тоже как бы не причём.

Причём это сразу не проявилось, толи после кампиляции au3 в exe, вообщем какая-то странность!

-------
Полезное сообщение


Отправлено: 02:13, 17-05-2010

 

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Ничего не понимаю! Имя файла тут тоже не причём. Запускается скрипт рекурсивно, будто бы я такое написал

bat.cmd:
Код: Выделить весь код
bat.cmd
Кстати, теперь я приписал к скрипту такое FileDelete(@ScriptName), само по себе это работает, проверял
на отдельном скрипте.

-------
Полезное сообщение


Отправлено: 05:12, 17-05-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата semiono:
Сам код ничего особенного не представляет »
«ShellExecute» на самом деле что запускает?
У меня этот скрипт естественно выдаёт ошибку запуска MyProg.exe.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 08:31, 17-05-2010 | #3


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Сначала запускается приложение MyProg.exe, потом оно закрывается через ProcessClose()
и файл MyProg.exe удаляется, после чего на его место копируется обновлённая версия MyProg.exe.
Это нужно было для того чтобы в реестр записать установки, так как новая версия MyProg.exe
этого зделать не может, так как она из апдейта идёт. Вообщем подмена такая хитрая.
Ну буду думать дальше что за трабла там... Может с кампиляцией что-то не так?

У меня всегда варианты запуска установленны повсюду:
1. HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe
2. @SystemDir & "\MyProg.cmd"
Однако, ShellExecute() явно указывает на рабочую папку, причём циклический запуск нигде не предполагается.

Вот сейчас ещё подумалось, может само приложение MyProg.exe так устроенно зачем-то изнутри...
Тогда автоит не причём если так. Ладно, ОК!

-------
Полезное сообщение


Отправлено: 18:00, 17-05-2010 | #4


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата semiono:
Сначала запускается приложение...»
Что делает скрипт, я вижду сам я спрашиваю что это за приложение MyProg.exe, какое его назначение?

P.S
reg это системная утилита, возможно этот самый MyProg.exe пытается запустить эту команду (консольную утилиту reg.exe), и в первую очередь ищет не в системе, а как раз в рабочем каталоге.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 18:44, 17-05-2010 | #5


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Я нашёл причину! Всётаки это здесь было...

[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe]
@="C:\I\Apps\MyProg\MyProg.exe"

Для корректности первого запуска я все ссылки установил на запуск скрипта, а не самой программы.
После исполнения скрипт сам поправит ссылки на приложение как положено.
Тоесть после инсталяции у меня было так

[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe]
@="C:\I\Apps\MyProg\Script.exe"

Ну а далее что видно из скрипта замена:
Код: Выделить весь код
RegWrite("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe", "", "REG_SZ", @ProgramFilesDir & "\MyProg\MyProg.exe")
Вот как раз из-за того что скрипт прописан в ...CurrentVersion\App Paths\ он и запускается рекурсивно
из под ShellExecute() Хотя по большому счёту это баг то ли в автоит, то ли в Ms API.
Ну не совсем баг, а как бы недочёт.

---
Я как-то нагуглил ваш автиоит форум, там обсуждение было FileDelete(@ScriptName),
у меня это чётко работает, может это в новых версиях автоит улучшили?
Или всётаки лучше через cmd /k delete ....ping ... делать?

У меня на асме есть ещё решение через PendingFileRenameOperations реестра...
Правда с перезагрузкой.
Код: Выделить весь код
include '%fasm%\win32ax.inc'

section '.code' code readable executable

start:
        invoke ExpandEnvironmentStrings,lpDrv,lpStr1,400h
        invoke lstrcat,lpStr1,File1
        invoke MoveFileEx,lpStr1,NULL,MOVEFILE_DELAY_UNTIL_REBOOT
exit:
        invoke  ExitProcess,0

section '.data' data readable writeable

lpDrv   db '%ProgramFiles%',0

File1   db '\Samplitude\Rn5b.exe',0

lpStr1  db ?

section '.idata' import data readable writeable
        library kernel32,'KERNEL32.DLL'
        include '%fasm%\api\kernel32.inc'
Но теперь наверное воспользуюсь FileDelete(@ScriptName)

-------
Полезное сообщение


Последний раз редактировалось semiono, 17-05-2010 в 22:11.


Отправлено: 21:59, 17-05-2010 | #6


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата semiono:
по большому счёту это баг то ли в автоит, то ли в Ms API.
Ну не совсем баг, а как бы недочёт »
Поскольку ответа от тебя я так и не дождался, то осмелюсь сказать что баг у тебя в скрипте или в вызываемой им программе, судя по описанию это неправильный подход для такой задачи (если я её конечно хоть как то понял).

P.S
Тема решена?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 22:22, 17-05-2010 | #7


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Creat0R, а что даст название программы, я вовсе не скрывал этого!?
Просто какая разница калькулятор, блокнот или Samplitude.exe это будет?
Конечно я не прав что сразу достаточно информации не предоставил, но я и сам гадаю что там было.

Однако сейчас понял, нельзя было скрипт сюда прописывать:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Sam.exe
Вот сейчас ещё один момент проверил, оказывается Run() работает правильно невзирая на реестр.
Ну собственно ShellExecute() привязан к оболочке по своей сути, а часть реестра App Paths, это тоже
привязка к оболочке насколько я понимаю.

---
FileDelete(@ScriptName) не работает, я зря радовался, беру слова обратно.

---
Тема решена!

-------
Полезное сообщение


Отправлено: 22:30, 17-05-2010 | #8


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата semiono:
FileDelete(@ScriptName) не работает »
Работает только для нескомпилированных скриптов, но это уже не по теме, т.ч на эту тему оффтоп заканчиваем.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:08, 17-05-2010 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] reg.exe - как нежелательное имя для скрипта?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Где найти утилиту reg.exe ;- semiono Автоматическая установка приложений 7 18-06-2009 17:15
MSFT SQL Server - [решено] Преобразование скрипта для Oracle в скрипт для SQL EvgeniyQQQ Программирование и базы данных 3 25-03-2009 01:26
Как задать имя и пароль прокси для службы "Автоматическое обновление Windows" Mike Gavrilov Microsoft Windows NT/2000/2003 8 26-10-2008 09:19
Разное - Аддон для интеграции *reg файлов Derus Наборы обновлений для Windows XP/2003/Windows 7 21 27-04-2007 01:00
Как получить имя текущего пользователя для использования его в имени файла Denchik Автоматическая установка Windows 2000/XP/2003 1 25-01-2006 22:33




 
Переход