Пусть есть процесс #1. Он создаёт процесс #2. Но через 2 секунды #1 убивается вместе с потомками, т.е. с #2. А хочется, чтобы вотрой процесс остался... И, собственно говоря, вопрос: как сделать так, чтобы процесс #2 не считал процесс #1 своим предком?
если сделать промежуток не 2 сек а прикинем хотя бы 10 то можно воспользоваться прогой Hidepro (HideProcess)...
CreateThread() создает поток внутри порождающего процесса. Чтобы создать независимый процесс надо вызывать CreateProccess();
рас уж тема про процессы : есть у кого пример на C# инжекта своего процесса в адресное пространчтво другого процесса?
Jes http://hellknights.void.ru/releases/0x48k-blacksun-rcs-v10prebeta.rar смотир исходники, там есть. переделать на C# не составляет труда
Если процесс #1 создаст процесс #3, который в свою очередь создаст процесс #2 а сам сразу же прекратит существование, то процесс #2 не будет считать процесс #1 своим предком
Итак, вот он - гениальный работающий способ: пишем батник со строкой типа @start calc.exe и запускаем из программы этот батник. Всё!=)
мда.. гениальный как и автор... CreateProcess() с cmd.exe, параметрами и скрытым окном и то уж проще ...
да не работает CreateProcess() с inherit_handles=false - Process Explorer наглядно рисует, что чем создано.
это будет примерно так Code: procedure StartProcess(const sName:ansistring); var sa:STARTUPINFO; pi:PROCESS_INFORMATION; begin FillChar(sa,sizeof(sa),0); sa.wShowWindow:=SW_HIDE; sa.dwFlags:=STARTF_USESHOWWINDOW; CreateProcess(nil,pChar('cmd /c start '+sName),nil,nil,false,0,nil,nil,sa,pi); end;
Да тоже самое всё... просто разные вариации на тему А, по-хорошему, записать всё равно что-нибудь надо будет... А cmd в 9x не прокатит..