|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] reg.exe - как нежелательное имя для скрипта? |
|
[решено] reg.exe - как нежелательное имя для скрипта?
|
Ветеран Сообщения: 842 |
Профиль | Отправить PM | Цитировать
Не могу понять в чём я ошибся, но скрипт запускается многократно вплоть до зависания.
Сам код ничего особенного не представляет: 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 прописан на удаление в реестре в PendingFileRenameOperations, хотя это тоже как бы не причём. Причём это сразу не проявилось, толи после кампиляции au3 в exe, вообщем какая-то странность! |
|
------- Отправлено: 02:13, 17-05-2010 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 05:12, 17-05-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата semiono:
У меня этот скрипт естественно выдаёт ошибку запуска MyProg.exe. |
|
------- Отправлено: 08:31, 17-05-2010 | #3 |
Ветеран Сообщения: 842
|
Профиль | Отправить 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 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата semiono:
P.S reg это системная утилита, возможно этот самый MyProg.exe пытается запустить эту команду (консольную утилиту reg.exe), и в первую очередь ищет не в системе, а как раз в рабочем каталоге. |
||
------- Отправлено: 18:44, 17-05-2010 | #5 |
Ветеран Сообщения: 842
|
Профиль | Отправить 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") из под 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' |
------- Последний раз редактировалось semiono, 17-05-2010 в 22:11. Отправлено: 21:59, 17-05-2010 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата semiono:
P.S Тема решена? |
|
------- Отправлено: 22:22, 17-05-2010 | #7 |
Ветеран Сообщения: 842
|
Профиль | Отправить 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 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата semiono:
|
|
------- Отправлено: 23:08, 17-05-2010 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Где найти утилиту 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 |
|