Jak uruchomić EXE'ca z zasobów bez zapisania na dysku?

0

Witam, najpierw krótki wstęp:

<font size="2">Przeczytałem artykuł o zasobach w EXE.
Przeczytałem odpowiedź na FAQ: Jak nie korzystając z komponentu dokleić do pliku program EXE. Tam znalazłem częściowo to o co mi chodziło.
Znalazłem 448 postów o ShellExecute, ale żaden z nich nie pasował.
W googlach też nie ma rozwiązania...</span>

No, to tytułem, żeby :-[ nie mówili, że nie szukałem.
Pytanie brzmi: Jak uruchomić EXE'ca z zasobów.
Ok, w FAQ jest kod:

var
  Res : TResourceStream;
begin
  Res:=TResourceStream.Create(hInstance,'PROGRAM',RT_RCDATA);
  Res.SaveToFile('Program.exe'); // zapisz na dysk
  Res.Free;
end;

Ale to wymaga zapisywania pliku na dysku, ergo nie będzie działać gdy mamy bardzo ograniczony dostęp do dysku :-D . Czy istnieje jakaś wersja funkcji ShellExecute typu:

Res:=TResourceStream.Create(hInstance,'PROGRAM',RT_RCDATA);
ShellExecute(0,'open',Res,nil,nil,SW_SHOW);

Pamiętajcie, nie można nic zapisywać na dysku.
Da się w ogóle? Uruchomiony proces musi mieć chyba ścieżkę, nie? Pozdrowienia i z góry dziękuję za odpowiedzi.

0

Było pare razy na forum. Wniosek zawsze jeden: musiałbyś napisać własnego loadera.

*http:*4programmers.net/Forum/168172

0

Pod jakim hasłem? Jakiego loadera? Coś więcej? Proszę pomóż...
//[EDIT]:
to co podałeś kończy się postem:

vegat napisał(a)

Raczej się nie da... :/ Musisz zapisać do do TMP-ów i stamtąd uruchomić....
.
Za taką pomoc dziękuję :-[ .

0

z zasobow czyli z pamieci

http://www.joachim-bauch.de/tutorials/load_dll_memory.html/en

to o dll ale powinno wystarczyc...

0

I co (ew. który akapit) odpowiedzią [est]?

0

nie oczekuj odpowiedzi w postaci

nalezy zastosowac funkcje

function WczytajMiEkzekaZPamieci(obszarpamieci:Pointer):boolean;

W tym artykule masz wystarczajaco duzo ... aby szukac dalej .

0

Niestety obawiam się, że bez jakieś porządnej wstawki assemblera jest to niemożliwe. W programach dosowych może jeszcze coś bym wykombinował (kiedyś napisałem wirusa komp., który doczepiał się do takich plików exe), jednak uruchomienie programu win32 (takiego z formą, wielowątkowego)... oj ciężko będzie...

Mógłbyś spróbować zrobić coś ala własny analizator kodu; np. pierwszych kilka byte to rozmiary okna, następne byte odpowiadają za komponenty na formie, itp... A w swoim programie analizowałbyś te dane i tworzyłbyś elementy w sposób dynamiczny- wiem, to jest trochę szalony pomysł :-D

0

Dlaczego chcesz urauchamiać exeka z zasobów ??? Opisz swoją koncepcje, to może da się jakoś to obejść sprytnym trickiem :)

0
adf88 napisał(a)

Dlaczego chcesz urauchamiać exeka z zasobów ??? Opisz swoją koncepcje, to może da się jakoś to obejść sprytnym trickiem :)
Na przykład mam w zasobach cudzy program (za pozwoleniem autora :-D ) i chcę go uruchomić moim programem. Może się zdarzyć sytuacja, że użytkownik nie ma odpowiednich praw dostępu. A program jest na przykład na płycie. Zależy mi na tym, żeby wszystko było w jednym EXE.

1 użytkowników online, w tym zalogowanych: 0, gości: 1