Привет всем.
Происходит креш программы (точнее, программы-инсталятора) при вызове ShellExecuteEx. Присходит сие только на Windows Vista.
try/catch ясное дело не помогает ибо при вызове ShellExecuteEx программа сразу здыхает (естественно с вызовом окна винды, о том что приложение сдохло, че сним делать). Может кто сталкивался с таким? Сразу оговорюсь, что не в параметрах дело, ибо даже вызов безобидного notepad.exe с помошью ShellExecuteEx в этом учатке кода (даже с verb-ом "runas") падает.
Еще инфа по вызову: Программа1 вызывает Программу2 с помошью CreateProcess, а Программа2 в свою очередь хочет вызвать Программу3 с помошью ShellExecuteEx, и тут креш Программы2.
Всем буду признателен хоть за какую-нибудь информацию.
-----------------------------------------
тут может быть ваша реклама
Здравствуйте, nauro, Вы писали:
N>Привет всем. N>Происходит креш программы (точнее, программы-инсталятора) при вызове ShellExecuteEx. Присходит сие только на Windows Vista. N>try/catch ясное дело не помогает ибо при вызове ShellExecuteEx программа сразу здыхает (естественно с вызовом окна винды, о том что приложение сдохло, че сним делать).
__try — __except надо, а не try-catch. И в обработчике посмотреть код исключения (GetExceptionCode)
Сразу "здыхать" программа сама не может, это сложный процесс. Вот убить ее можно сразу.
>Может кто сталкивался с таким? Сразу оговорюсь, что не в параметрах дело, ибо даже вызов безобидного notepad.exe с помошью ShellExecuteEx в этом учатке кода (даже с verb-ом "runas") падает.
Это скорее говорит о том, что дело именно в параметрах.
N>Еще инфа по вызову: Программа1 вызывает Программу2 с помошью CreateProcess, а Программа2 в свою очередь хочет вызвать Программу3 с помошью ShellExecuteEx, и тут креш Программы2. N>Всем буду признателен хоть за какую-нибудь информацию.
Здравствуйте, nauro, Вы писали:
N>Происходит креш программы (точнее, программы-инсталятора) при вызове ShellExecuteEx. Присходит сие только на Windows Vista.
А на чистой Vista-машине тоже падает? Может быть, установлена какая-нибудь кривая прога, например, тулбар для IE или вроде того.
Здравствуйте, nauro, Вы писали: N>Привет всем. N>Происходит креш программы (точнее, программы-инсталятора) при вызове ShellExecuteEx.
У тебя в программе где то в другом месте ошибка обращения к памяти, скорее всего ищи в функциях работы со строками, где нибудь наверное запортил '\0' в конце строки. А лучше напиши сообщение системы, а то так не очень понятно что за "креш".
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>__try — __except надо, а не try-catch. И в обработчике посмотреть код исключения (GetExceptionCode)
Спасибо за совет, попробовал, "те же яйца, только в профиль". Вылетает сразуже при вызове ShellExecuteEx и ни в __except ни в __finally не заходит.
Может я не так блок обьявляю?
Здравствуйте, LGB, Вы писали:
LGB>А на чистой Vista-машине тоже падает? Может быть, установлена какая-нибудь кривая прога, например, тулбар для IE или вроде того.
Да, тоже падает. Причем на 7-ке работет.
-----------------------------------------
тут может быть ваша реклама
Здравствуйте, shasa, Вы писали:
S>У тебя в программе где то в другом месте ошибка обращения к памяти, скорее всего ищи в функциях работы со строками, где нибудь наверное запортил '\0' в конце строки. А лучше напиши сообщение системы, а то так не очень понятно что за "креш".
Сообщение стандартное, APPCRASH, имя модуля: Secur32.dll.
-----------------------------------------
тут может быть ваша реклама
Здравствуйте, nauro, Вы писали:
N>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>__try — __except надо, а не try-catch. И в обработчике посмотреть код исключения (GetExceptionCode) N>Спасибо за совет, попробовал, "те же яйца, только в профиль". Вылетает сразуже при вызове ShellExecuteEx и ни в __except ни в __finally не заходит. N>Может я не так блок обьявляю? N>
естественно в логе последняя запись "executing ShellExecuteEx". Ну и че сним теперь делать.. гребаная виста. Почему в 7-ке все норм, ведь родные системы вроде-бы.
-----------------------------------------
тут может быть ваша реклама
Здравствуйте, ononim, Вы писали:
N>>Всем буду признателен хоть за какую-нибудь информацию. O>CoInitialize позвать не забыли перед ShellExecute'ом?
а зачем он нужен? я ведь не использую СОМ.
-----------------------------------------
тут может быть ваша реклама
Здравствуйте, De-Bugger, Вы писали:
DB>Здравствуйте, nauro, Вы писали:
N>>ShellExecuteEx(&seInfo);
DB>Покажи заполнение seInfo с момента инициализации.
Пжлста. Не проблема. Вместо pathToExecute могу подставить "notepad.exe", а в lpVerb могу заполнить"runas" и nShow SW_MAXIMIZE, все валится при любых раскладах.
Здравствуйте, De-Bugger, Вы писали:
DB>Здравствуйте, nauro, Вы писали:
N>>К сожалению и это не помогло
DB>А пробовал голое VC приложение Hello World доточить теми 8-ю строчками с вызовом ShellExecute? Почти 100% уверен, что ошибка совсем в другом месте.
Сейчас какраз над этим работаю. Дело в том что не все так просто. В своем посте я указывал, что процедура креша такая: Приложение1 стартует Приложение2 с помошью CreateProcess а Приложение2 в свою очередь стартует ShellExecuteEx с Приложением3 (вот тут креш) и все это под инсталлером (и только под ним и крешится, прямой запуск естественно работает).
-----------------------------------------
тут может быть ваша реклама