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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 17:29  Число просмотров: 490
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
то что одну и ту же ошибку выдает это хорошо. ты бы написал какую конкретно.
И еще есть одно лекарство. Называется Visual Studio Service Pack 6. Закачай его из M$-а. У меня в оной задаче была проблемка, я поставил новый SP, проблемы не стало :)
А пока попробуй написать такую фигню, если пройдет, то тебе точно новый SP нужен.

typedef BOOL (*CreateProcessFunc)(
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
);

BOOL CreateProc(LPCTSTR lpAppName, DWORD dwFlags, LPSTARTUPINFO si, LPPROCESS_INFORMATION pi)
{
ASSERT(lpAppName != NULL);
ASSERT(pi != NULL);

HMODULE hModule = ::GetModuleHandle(_T("kernel32.dll"));
ASSERT(hModule != NULL);
if (hModule == NULL)
{
TRACE("Kernel32.dll module is not loaded\n");
return FALSE;
}
CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcess");
ASSERT(pfnCreateProc != NULL);
if (pfnCreateProc == NULL)
{
TRACE("Couldnot find the address of function CreateProcess in the module kernel32.dll\n");
return FALSE;
}
return (*pfnCreateProc)(lpAppName, NULL, NULL, NULL, TRUE, dwFlags, NULL, NULL, si, pi);
}

Ну а если и это не поможет, то звони 911 :))
Удачи ...

P.S. не поленись, укажи параметр LPPROCESS_INFORMATION lpProcessInformation.
<programming>
[C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 26.05.01 21:44  
Автор: Drongo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Дело в том. что у меня там было все это дело, тока я все аргументы поставил нулями, а исполняемый модуль был прописан, кстати все специально из МСДНа брал для 2000-ой...
Хотя попробую ышо твой вариант.... 8-)))
А за внимание огромное пасиба... 8-))
[C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 01:42  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Пожалуйста конечно. Но ....

> Дело в том. что у меня там было все это дело, тока я все
> аргументы поставил нулями, а исполняемый модуль был
> прописан, кстати все специально из МСДНа брал для
что - то не понятно. Хчешь сказать, что в параметре lpApllicationName указал, к примеру, "SomeExecutableFile.exe" и он у тебя не заработал?
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 02:55  
Автор: Drongo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Пожалуйста конечно. Но ....
>
> > Дело в том. что у меня там было все это дело, тока я
> все
> > аргументы поставил нулями, а исполняемый модуль был
> > прописан, кстати все специально из МСДНа брал для
> что - то не понятно. Хчешь сказать, что в параметре
> lpApllicationName указал, к примеру,
> "SomeExecutableFile.exe" и он у тебя не заработал?

совершенно в дырочку..... 8-)) там у мя стояла конкретная консольная прога, которую нада запустить, прога без глюков, отлажена..... кроме того, в моем случае тридв не проходят, поскольку нада именно новый процесс.... 8-(((
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 13:06  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>

Ну тоды не знаю что у тебя. Но наверняка это твой баг.
может параметры/флажки не те.
а еще обрати внимание на 1 деталь
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
т.е. lpApplicationName - const char* (точнее TCHAR)
lpCommandLine - char*. может тут такой вариант не проходит
lpCommandLine = (char*)"SomeExecutableFile.exe".
еще учти UNICODE версию
если ты где то написал
#define FILE_EXE "SomeExecutableFile.exe"
CreateProcess((LPCTSTR)FILE_EXE, .....);
то для UNICODE версии это должно привести к crash-у ....
вообщем тут много чего может быть, о котором не подозреваешь. На то он и баг называется, что трудно ловится :-))))) Просмотри еще раз, и обязательно потом вызови GetLastError() - посмотри что за ошибку выдает. Это наверняка может о чем то подсказать.

Удачи.
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 13:50  
Автор: Drongo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
в том то и все западло что ошибку выдаеть всегда одну и ту же... 8-(( а по ней доки мало, перелопатил все МСДНы которыи со словом 2000 нашел.. 8-))) ну лана, буду мучаться, а ве таки винда - это сакс!!! никакого тебе уважения к программерам!!!! 8-)))
покеда.... 8-))
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 17:29  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
то что одну и ту же ошибку выдает это хорошо. ты бы написал какую конкретно.
И еще есть одно лекарство. Называется Visual Studio Service Pack 6. Закачай его из M$-а. У меня в оной задаче была проблемка, я поставил новый SP, проблемы не стало :)
А пока попробуй написать такую фигню, если пройдет, то тебе точно новый SP нужен.

typedef BOOL (*CreateProcessFunc)(
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
);

BOOL CreateProc(LPCTSTR lpAppName, DWORD dwFlags, LPSTARTUPINFO si, LPPROCESS_INFORMATION pi)
{
ASSERT(lpAppName != NULL);
ASSERT(pi != NULL);

HMODULE hModule = ::GetModuleHandle(_T("kernel32.dll"));
ASSERT(hModule != NULL);
if (hModule == NULL)
{
TRACE("Kernel32.dll module is not loaded\n");
return FALSE;
}
CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcess");
ASSERT(pfnCreateProc != NULL);
if (pfnCreateProc == NULL)
{
TRACE("Couldnot find the address of function CreateProcess in the module kernel32.dll\n");
return FALSE;
}
return (*pfnCreateProc)(lpAppName, NULL, NULL, NULL, TRUE, dwFlags, NULL, NULL, si, pi);
}

Ну а если и это не поможет, то звони 911 :))
Удачи ...

P.S. не поленись, укажи параметр LPPROCESS_INFORMATION lpProcessInformation.
[C++] Поправка 28.05.01 01:25  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Совсем позабыл, т.к. есть 2 версии CreateProcess, т.е. Unicode and ANSI versions для 2К, то тут надо так

#ifdef UNICODE

CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcessW");

#else // UNICODE

CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcessA");

#endif // UNICODE

теперь кажись все.
1






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


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