Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Anwendung aus dem Arbeitsspeicher ausführen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
28.08.2008, 18:35 Uhr
~Rolf
Gast


Eine ausführbare Datei wird mittels eines Programms in den Arbeitsspeicher kopiert und soll dann aus diesem heraus ausgeführt werden. Das Programm was das handelt soll weiterhin aktiv bleiben. Ist sowas möglich? Ich habe keine Idee wo ich ansetzen soll.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.08.2008, 11:48 Uhr
berniebutt



Unter Windows können beliebig viele Programme gleichzeitig geladen werden. Es ist allerdings nur ein Programm momentan aktiv. Denn Windows arbeitet mit Nachrichten, nicht mit Zeitscheiben. Dennoch kann man Multitasking mit Nachrichten realisieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.08.2008, 12:55 Uhr
stephanw
localhorst


Hm, die Antwort von berniebutt verstehe ich leider nicht.

Die Frage schon und ich würde diese noch ergänzen:

Wenn ich eine fertig übersetzte DLL im Hauptspeicher habe (also als langes Feld von char), kann ich diese "laden" und ausführen, ohne sie dafür vorher auf Platte schreiben zu müssen ?

Damit könnte man ein Programm mit allen benötigten Bibliotheken zusammenpacken zu einer einzigen ausführbaren Datei. So etwa wie selbstentpackendes Zip, nur ohne entpacken
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.08.2008, 12:56 Uhr
~Rolf
Gast


Was mich genau interessiert, ist der technische Hintergrund von RamDrives. Ich hatte schonmal nach einem open source ramdrive prog geschaut um die Programmierung nachzuvollziehen, bin aber nicht fündig geworden. Grundsätzlich will ich kein neues ramdrive prog schreiben, aber das Wissen was ich benötige, steckt sicher darin.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.08.2008, 13:30 Uhr
ao

(Operator)



Zitat von stephanw:
Wenn ich eine fertig übersetzte DLL im Hauptspeicher habe (also als langes Feld von char), kann ich diese "laden" und ausführen, ohne sie dafür vorher auf Platte schreiben zu müssen ?

Anders formuliert: Kann man dem Lader des Betriebssystems anstelle eines DLL-Dateinamens auch ein Stück Speicher unterschieben, das den geladenen Code bereits enthält?

Im Innenleben des Betriebssystems gibt es solche Mechanismen ganz sicher, sonst würde es nicht funktionieren, dass DLLs nur einmal geladen werden. Aber ob die übers API erreichbar sind, möchte ich fast bezweifeln, denn das wäre DAS Scheunentor für Viren und Würmer.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.08.2008, 13:39 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Sehe ich wie ao, außerdem gibt es auch gar keinen Sinn für sowas da Windows sich von alleine darum kümmert eine Anwendung in den RAM zu laden sobald sie gestartet wird.

@Rolf
Wenn du sagst was du wirklich bzw. genau machen willst kann man dir auch besser helfen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.08.2008, 15:06 Uhr
~Rolf
Gast


was ich will, ist zu verstehen wie eine ramdrive software arbeitet.

Die anwendung soll aus dem Ram in den Ram geladen werden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.08.2008, 15:18 Uhr
ao

(Operator)


Ein RAMDrive ist ein Gerätetreiber, der dasselbe Massenspeicher-Interface hat wie ein Festplatten-CD-Cardreader-Wasweißich-Treiber. Deshalb wird es vom Betriebssystem als Laufwerk erkannt und angezeigt. Dass hinter dem Treiber kein Laufwerk steht, sondern ein Stück Arbeitsspeicher, der vom Treiber verwaltet wird, kann das Betriebssystem nicht sehen, und es ist auch unwichtig.

Darum werden Daten, die im RAMDrive gespeichert sind, genauso geladen (ins RAM kopiert) wie Daten, die auf der Festplatte stehen. Dass sie in Wahrheit bereits im RAM lagen, an anderer Stelle, interessiert keinen, und deine Applikation hat keine legale Möglichkeit, am RAMDrive-Treiber vorbei an die Quelldaten zu kommen.

Dieser Post wurde am 29.08.2008 um 15:21 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.08.2008, 16:10 Uhr
~Rolf
Gast


ok das ist schonmal eine hilfreiche Erkenntnis. Ich bin eher davon ausgegangen, dass das Einladen der Software von der ramdrive Software gehandelt werden muss.
Man muss sich also durch den Gerätetreiber nicht darum kümmern, wie Windows die Daten einliest, da Windows denkt es sei ein Massenspeichergerät.

Ok dann ist der ramdrive wohl doch der falsche Ansatz da ich keinen Gerätetreiber installieren möchte. Ich möchte all dies während der Ausführung einer Software handeln.

Es müsste folgendermassen laufen. Exe wird aus dem Internet heruntergeladen. Client legt die Datei nicht ins Filesystem ab, sondern im Arbeitsspeicher und führt sie von dort aus. Ich frage mich ob so etwas realisierbar ist?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.08.2008, 16:19 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Lass den Client die Anwendung nach gebrauch doch einfach wieder löschen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: