Сейчас на форуме: tyns777, zds (+3 невидимых)

 eXeL@B —› Программирование —› разница между cmd.exe cmdline и CreateProcess(cmdline)
Посл.ответ Сообщение

Ранг: 172.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 28 ноября 2009 02:20
· Личное сообщение · #1

есть софт, который вполне корректно работает если его запустить изпод командного интерпретатора (находясь в его папке), и который падает со внутренней ошибкой (немогу пока понять то ли особенность софта, то ли вида его запуска вкупе с ОС) при любом другом способе запуска: пробовал батником с указанием параметра chdir, с обычным CreateProcess, с CreateProcess и заполнением параметра lpCurrentDirectory - нивкакую. какая может быть разница в запуске софта батником, CreateProcess и cmd.ехе? как полностью сэмулить запуск консоли если вариант CreateProcess ('command.com /c' + commandline) тоже не выдал нужного результата?

-----
HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 28 ноября 2009 09:57
· Личное сообщение · #2

посмотри переменные окружения, может быть дело в них
ну и файл выложи - чтобы можно было поэкспериментировать

-----
EnJoy!




Ранг: 25.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2009 14:33
· Личное сообщение · #3

ProTeuS, на чем написано? Случаем не дельфовая реализация?

Прошу прощение за попытку телепатии, но я так понимаю, софт консольный? Может быть завязано на том, как консоль создается, собственно. Есть наркоманы, которые создают консоль, опираясь на родительский процесс (встречал дикие финты в попытке совместить GUI + Console), забыл API к сожалению.



Ранг: 172.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 28 ноября 2009 19:26
· Личное сообщение · #4

RUNaum, на сях. софт увесистый и работает только на определенной конфигурации железа, поэтому выкладывать его большого смысла нет. ресверсить там нечего в исполняемом файле, дело в самом способе запуска процесса, пока непонятно в чем именно. там консоль таки, возможно она при старте стартует службу

-----
HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE




Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 28 ноября 2009 19:57
· Личное сообщение · #5

попробуй проснифать создание процесса - например используя Process Monitor Руссиновича
если не поможет - возможно надо логировать обращение к определенным API винды - для таких случаев я юзаю логгер от rustem'а (гдето есть ветка на форуме)



Ранг: 10.6 (новичок)
Активность: 0.010
Статус: Участник

Создано: 28 ноября 2009 21:35
· Личное сообщение · #6

При запуске процесса из консоли cmd передает ему собственные хэндлы strin, stdout и stderr, чтобы вес вводимый/выводимый в программе текст показывался в том же окне, а не в новой консоли. Используется та же CreateProcess, но cmd добавляет флаг "Запускать в том же окне". Других отличий не знаю.

И, пожалуйста, не создавай тему на нескольких форумах сразу, а то будут разговаривать сами с собой.



Ранг: 172.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 29 ноября 2009 15:09
· Личное сообщение · #7

не актуально, сервис банально стартовал только если парентом его стартующего бинаря был explorer.exe

-----
HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 29 ноября 2009 15:14
· Личное сообщение · #8

Тогда можно закрыть, видимо.


 eXeL@B —› Программирование —› разница между cmd.exe cmdline и CreateProcess(cmdline)
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати