<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[.exe aus Resource auf die Festplatte schreiben]]></title><description><![CDATA[<p>Ich schreibe gerade an einem Installer und habe mir eine resource.rc mit dem Inhalt</p>
<pre><code>RES_EXECUTABLE  EXE    &quot;myexe.exe&quot;
</code></pre>
<p>erstellt und zum Projekt hinzugefügt. Der Größe des fertig kompilierten Programms nach zu urteilen ist die exe jetzt drin. Aber wie kann ich sie nun in irgendeinen Ordner auf der Festplatte speichern?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/56114/exe-aus-resource-auf-die-festplatte-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Jul 2026 11:00:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/56114.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Nov 2003 10:01:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to .exe aus Resource auf die Festplatte schreiben on Sat, 22 Nov 2003 10:01:04 GMT]]></title><description><![CDATA[<p>Ich schreibe gerade an einem Installer und habe mir eine resource.rc mit dem Inhalt</p>
<pre><code>RES_EXECUTABLE  EXE    &quot;myexe.exe&quot;
</code></pre>
<p>erstellt und zum Projekt hinzugefügt. Der Größe des fertig kompilierten Programms nach zu urteilen ist die exe jetzt drin. Aber wie kann ich sie nun in irgendeinen Ordner auf der Festplatte speichern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/400056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/400056</guid><dc:creator><![CDATA[nirsaja]]></dc:creator><pubDate>Sat, 22 Nov 2003 10:01:04 GMT</pubDate></item><item><title><![CDATA[Reply to .exe aus Resource auf die Festplatte schreiben on Sat, 22 Nov 2003 14:51:04 GMT]]></title><description><![CDATA[<p>Du musst die Resource als BINARY ins Resource-Script aufnehmen. Dann kannst du in deinem Programm folgende Funktion aufrufen. Ich hoffe, ich hab da jetzt keine Fehler eingebaut. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">LPBYTE GetResourceBytes(HINSTANCE hInstance, LPCTSTR lpszResName, DWORD&amp; dwSize)
{
   HRSRC hrsrc;
   hGLOBAL hGlobal;

   hrsrc = FindResource(hInstance, lpszResName, &quot;BINARY&quot;);
   if(!hrsrc)
      return NULL;

   // this is standard &quot;BINARY&quot; retrieval
   hGlobal = LoadResource(hInstance, hrsrc);
   if(!hGlobal)
      return NULL;

   // get array length (in bytes)
   dwSize = SizeofResource(hInstance, hrsrc);

   // lock resource and return
   return( LockResource(hGlobal) );
}
</code></pre>
<p>Wie du die Daten speicherst, überlasse ich dir. Die Länge des Daten-Arrays bekommst du im letzten Parameter zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/400210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/400210</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Sat, 22 Nov 2003 14:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to .exe aus Resource auf die Festplatte schreiben on Tue, 12 Oct 2004 08:59:31 GMT]]></title><description><![CDATA[<pre><code>LPBYTE GetResourceBytes(HINSTANCE hInstance, LPCTSTR lpszResName, DWORD&amp; dwSize)
{ 
   HRSRC hrsrc; 
   HGLOBAL hGlobal;  //mit hGLOBAL klappts nich

   hrsrc = FindResource(hInstance, lpszResName, &quot;BINARY&quot;);
   if(!hrsrc) 
      return NULL;

   // this is standard &quot;BINARY&quot; retrieval
   hGlobal = LoadResource(hInstance, hrsrc); 
   if(!hGlobal) 
      return NULL;

   // get array length (in bytes) 
   dwSize = SizeofResource(hInstance, hrsrc); 

   // lock resource and return 
   return (LPBYTE)(LockResource(hGlobal));
}

//Ohne das (LPBYTE):
//[C++ Error] Main.cpp(49): E2034 Cannot convert 'void *' to 'unsigned char *'

void __fastcall TLoader::FormShow(TObject *Sender)
{
DWORD size;
LPBYTE DieExe;
DieExe=GetResourceBytes(Application-&gt;Handle,&quot;RES_EXECUTABLE&quot;,size);
TFileStream *InDatei=new TFileStream(&quot;Datei.exe&quot;, fmCreate);
InDatei-&gt;Write(&amp;DieExe, size);
InDatei-&gt;Free();
}
</code></pre>
<p>Die Datei wird zwar erstellt, aber nicht &quot;gefüllt&quot;. Die &quot;Datei.exe&quot; bleibt bei 0 Byte. Wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/626708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/626708</guid><dc:creator><![CDATA[Diabolo]]></dc:creator><pubDate>Tue, 12 Oct 2004 08:59:31 GMT</pubDate></item><item><title><![CDATA[Reply to .exe aus Resource auf die Festplatte schreiben on Tue, 12 Oct 2004 10:53:40 GMT]]></title><description><![CDATA[<p>Habe gerade festgestellt, dass GetResourceBytes NULL zurückgibt.<br />
Aber wieso?</p>
<pre><code>Resource.rh:
#ifndef RESOURCE_RH
#define RESOURCE_RH

#define RES_EXECUTABLE    1000
#define RES_DLLFILE       1001
#endif
</code></pre>
<pre><code>Resource.rc:
#include &quot;RESOURCE.RH&quot;

RES_EXECUTABLE  EXE    &quot;mscc.exe&quot;
RES_DLLFILE     DLL    &quot;keydll.dll&quot;
</code></pre>
<p>Aber der Größe des Programms zu urteilen ist die EXE und DLL im Projekt mit drin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/626793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/626793</guid><dc:creator><![CDATA[Diabolo]]></dc:creator><pubDate>Tue, 12 Oct 2004 10:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to .exe aus Resource auf die Festplatte schreiben on Tue, 12 Oct 2004 16:15:44 GMT]]></title><description><![CDATA[<p>Habs jetzt mal anders versucht und es klappt:</p>
<pre><code>Resource.rh:
#ifndef RESOURCE_RH
#define RESOURCE_RH

#define RES_EXECUTABLE    1060
#define RES_DLLFILE       1061
#endif
</code></pre>
<pre><code>Resource.rc:
#include &quot;RESOURCE.RH&quot;

RES_EXECUTABLE  EXE    &quot;mscc.exe&quot;
RES_DLLFILE     DLL    &quot;keydll.dll&quot;
</code></pre>
<pre><code>HRSRC rsrc = FindResource(HInstance, MAKEINTRESOURCE(1060), RT_RCDATA);

  if (!rsrc) ShowMessage(&quot;Fehler:&quot;+AnsiString(GetLastError()));

  DWORD Size = SizeofResource(HInstance , rsrc);
  HGLOBAL MemoryHandle = LoadResource(HInstance,rsrc);
  if (MemoryHandle == NULL) ShowMessage(&quot;Fehler:&quot;+AnsiString(GetLastError()));

  BYTE *MemPtr = (BYTE *)LockResource(MemoryHandle); 

  TMemoryStream *MyStream =  new TMemoryStream;
   MyStream-&gt;Write(MemPtr, Size); 
   MyStream-&gt;Position = 0;

   MyStream-&gt;SaveToFile(ExtractFilePath(ParamStr(0))+&quot;Meine1.exe&quot;);
  delete MyStream;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/627018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627018</guid><dc:creator><![CDATA[Diabolo]]></dc:creator><pubDate>Tue, 12 Oct 2004 16:15:44 GMT</pubDate></item></channel></rss>