Pravim jedan protector za fajlove koji radi tako sto se posebno programce doda na pocetku nekog fajla, a fajl se enkriptuje. Kad se startuje taj fajl, startuje se programce (koje je na pocetku) koje trazi da se unese sifra i onda pomocu te sifre dekriptuje fajl (koji se nalazi na kraju fajla, iza programceta

E sad, ja ceo fajl u toku dekriptovanja zapisujem u MemoryStream. Moze li se nekako izvrsiti taj buffer koji se nalazi u MemoryStream ? Probao sam neke egzibicije sa CreateProcess, ali koliko vidim, on izvrsava samo executabilne fajlove, ne i druge (recimo, mp3), i to samo one koji su na hard disku. Ne mogu da koristim ShellExecute zato sto mi treba handle do procesa, da bi ga sa WaitForSingleObject cekao i posle zavrsetka izbrisao fajl...
Evo primera CreateProcess :
Code:
FillChar(sInfo, SizeOf(TStartupInfo), 0);
sInfo.cb := SizeOf(TStartupInfo);
CreateProcess(nil, mstream.Memory, nil, nil, FALSE, NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo);
WaitForSingleObject(pInfo.hProcess, INFINITE);
FillChar(sInfo, SizeOf(TStartupInfo), 0);
sInfo.cb := SizeOf(TStartupInfo);
CreateProcess(nil, mstream.Memory, nil, nil, FALSE, NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo);
WaitForSingleObject(pInfo.hProcess, INFINITE);