информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetВсе любят медСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] а чего ты ожидал? 26.05.01 17:37  Число просмотров: 826
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> короче создай прогу только с функцией main() и там пропиши
> такие строки
> #include <Windows.h>
> #include <Winbase.h>
>
> а потом в проге дальше
> if(CreateProcess(0,0,0,0,true,CREATE_NEW_CONSOLE,0,0,0,0))
> {
> std::cout<<"OK";
> }
> else
> {
> std::cout<<GetLastError();
> }

Тут и создавать нечего, сразу видно. Короче вот описание ф-ии CreateProcess:
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
Значит так, если lpApplicationName == NULL, то в переменной lpCommandLine = / имя ЕХЕ файла / + / аргументы /
если lpCommandLine == NULL, то наоборот
и еще, если процесс 16-битный, то lpApplicationName == NULL, а lpCommandLine = ЕХЕ + аргументы
так что следует указать имя исполняемого модуля. исполнять то нечего, модуля нет, вот он и возвращает ошибку.
А может тебе не процесс а поток нужен? тогда и доступ будет свободный и асинхронность исполнения будет. все таки Win32 отличается от UNIX-a. тут ф-ии fork() нет.

А почему 98 его запустил - этого я не могу сказать, все таки я с ним мало работал. Хотя по логике, если просесс (как ты говоришь) создается, то он долго не держется, т.е. он сразу должен закончить работу.
<programming>
[C++] Конкретно для кабанчика.... 8-))) 26.05.01 16:13  
Автор: Drongo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Значит так, уважая твою просьбу.... 8-)) Сразу говорю - ниче конкретного сказать не могу поскольку сам не понимаю, предположение:
2000-ая, типа винда с супер-пупер виртуальной памятью, как я понял, то Билли решил создать защищенную систему для ламеров, отсюда - невозможность свободной записи в память, то есть новая прога коли она запускается из другой проги создана быть не могеть.... коли хошь, могешь в МСДНе глянуть ошибку.... блин, глючит нехорошая студия..... 8-((
короче создай прогу только с функцией main() и там пропиши такие строки
#include <Windows.h>
#include <Winbase.h>

а потом в проге дальше
if(CreateProcess(0,0,0,0,true,CREATE_NEW_CONSOLE,0,0,0,0))
{
std::cout<<"OK";
}
else
{
std::cout<<GetLastError();
}
и всю эту ерунду попробуй откомпилить под W'2k...
предупреждаю сразу, 98-ая глотнет ее без траблов... 8-))
кстати SP1 только усугубляет положение, он выбрасывает прогу вшо до того как она ошибку прописала....
Коли чего раскопаешь, то пиши, буду оч признателен... 8-))
Где лежат такие 98е? 26.05.01 17:53  
Автор: пупс Статус: Незарегистрированный пользователь
<"чистая" ссылка>
GetLastError() возвращает ERROR_INVALID_PARAMETER естессно.
[C++] а чего ты ожидал? 26.05.01 17:37  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> короче создай прогу только с функцией main() и там пропиши
> такие строки
> #include <Windows.h>
> #include <Winbase.h>
>
> а потом в проге дальше
> if(CreateProcess(0,0,0,0,true,CREATE_NEW_CONSOLE,0,0,0,0))
> {
> std::cout<<"OK";
> }
> else
> {
> std::cout<<GetLastError();
> }

Тут и создавать нечего, сразу видно. Короче вот описание ф-ии CreateProcess:
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
Значит так, если lpApplicationName == NULL, то в переменной lpCommandLine = / имя ЕХЕ файла / + / аргументы /
если lpCommandLine == NULL, то наоборот
и еще, если процесс 16-битный, то lpApplicationName == NULL, а lpCommandLine = ЕХЕ + аргументы
так что следует указать имя исполняемого модуля. исполнять то нечего, модуля нет, вот он и возвращает ошибку.
А может тебе не процесс а поток нужен? тогда и доступ будет свободный и асинхронность исполнения будет. все таки Win32 отличается от UNIX-a. тут ф-ии fork() нет.

А почему 98 его запустил - этого я не могу сказать, все таки я с ним мало работал. Хотя по логике, если просесс (как ты говоришь) создается, то он долго не держется, т.е. он сразу должен закончить работу.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach