<?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[Problem unter XP Service Pack 2]]></title><description><![CDATA[<pre><code>__fastcall TF_Update::TF_Update(TComponent* Owner)
    : TForm(Owner)
{
    //Constructor von class TF_Update
    //Dieser Constructor wird unter Service-Pack 2 immer  
    //weiter ausgeführt, obwohl keine Loop definiert ist.
    ... 
    ...

    if (!updateCheck())             
    {
        execute(_projectName); //_projectName ist eine ausführbare EXE-Datei, e.g. project.exe
        exit(0);
    }
}

//---------------------------------------------------------------------------
void TF_Update::execute(AnsiString ziel)
{
    long i;
    i=long(ShellExecute(0, &quot;open&quot;, ziel.c_str(), 0, 0, SW_SHOWNORMAL));

    //Fehlerabfang
    if(i &lt;= 32)
    {
     if ( (i == SE_ERR_ACCESSDENIED) || (i == SE_ERR_SHARE) )
      Application -&gt; MessageBox(&quot;Die Datei wird bereits verwendet!&quot;,
        &quot;Kommunikation&quot;, MB_OK + MB_ICONERROR);
     else if ( (i == SE_ERR_ASSOCINCOMPLETE) || (i == SE_ERR_NOASSOC) )
      Application -&gt; MessageBox(&quot;Die Dateiendung ist mit keinem Programm verknüpft!&quot;,&quot;Kommunikation&quot;, MB_OK + MB_ICONERROR);
     else
      Application -&gt; MessageBox(&quot;Ein unerwarteter Fehler trat auf!&quot;
        , &quot;Kommunikation&quot;,MB_OK + MB_ICONERROR);
    }
}
</code></pre>
<p>Ich benutze 'ShellExecute()', um eine ausführbare EXE-Datei aufzurufen. Das läuft ganz gut außer mit XP Service-Pack 2. Der Constructor wird immer ausgeführt, obwohl es gar keine Loop definiert ist. Die EXE-Datei kann auch nicht ausgeführt werden, obwohl der Zurückwert 'i' in Method 'execute()' immer 42 ist, b.z.w. die Zurückwert mehr als 32 bedeutet ok.</p>
<p>Das Problem liegt bestimmt von XP Service Pack2, aber ich weiß nicht genau, wie ich es lösen soll. Kann jemand mir helfen?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/83153/problem-unter-xp-service-pack-2</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 21:16:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/83153.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Aug 2004 10:09:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem unter XP Service Pack 2 on Wed, 18 Aug 2004 10:09:54 GMT]]></title><description><![CDATA[<pre><code>__fastcall TF_Update::TF_Update(TComponent* Owner)
    : TForm(Owner)
{
    //Constructor von class TF_Update
    //Dieser Constructor wird unter Service-Pack 2 immer  
    //weiter ausgeführt, obwohl keine Loop definiert ist.
    ... 
    ...

    if (!updateCheck())             
    {
        execute(_projectName); //_projectName ist eine ausführbare EXE-Datei, e.g. project.exe
        exit(0);
    }
}

//---------------------------------------------------------------------------
void TF_Update::execute(AnsiString ziel)
{
    long i;
    i=long(ShellExecute(0, &quot;open&quot;, ziel.c_str(), 0, 0, SW_SHOWNORMAL));

    //Fehlerabfang
    if(i &lt;= 32)
    {
     if ( (i == SE_ERR_ACCESSDENIED) || (i == SE_ERR_SHARE) )
      Application -&gt; MessageBox(&quot;Die Datei wird bereits verwendet!&quot;,
        &quot;Kommunikation&quot;, MB_OK + MB_ICONERROR);
     else if ( (i == SE_ERR_ASSOCINCOMPLETE) || (i == SE_ERR_NOASSOC) )
      Application -&gt; MessageBox(&quot;Die Dateiendung ist mit keinem Programm verknüpft!&quot;,&quot;Kommunikation&quot;, MB_OK + MB_ICONERROR);
     else
      Application -&gt; MessageBox(&quot;Ein unerwarteter Fehler trat auf!&quot;
        , &quot;Kommunikation&quot;,MB_OK + MB_ICONERROR);
    }
}
</code></pre>
<p>Ich benutze 'ShellExecute()', um eine ausführbare EXE-Datei aufzurufen. Das läuft ganz gut außer mit XP Service-Pack 2. Der Constructor wird immer ausgeführt, obwohl es gar keine Loop definiert ist. Die EXE-Datei kann auch nicht ausgeführt werden, obwohl der Zurückwert 'i' in Method 'execute()' immer 42 ist, b.z.w. die Zurückwert mehr als 32 bedeutet ok.</p>
<p>Das Problem liegt bestimmt von XP Service Pack2, aber ich weiß nicht genau, wie ich es lösen soll. Kann jemand mir helfen?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/585220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585220</guid><dc:creator><![CDATA[fubin_22527]]></dc:creator><pubDate>Wed, 18 Aug 2004 10:09:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem unter XP Service Pack 2 on Wed, 18 Aug 2004 10:24:40 GMT]]></title><description><![CDATA[<p>Schon mal die Suche benutzt?</p>
<p>Ich frag nur mal so, bevor dir Jansen mit ner zusammengerollten Zeitung auf die Birne haut, deine Nase auf den &quot;Suchen&quot;-Button drückt und &quot;PFUI!&quot; brüllt... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/585235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585235</guid><dc:creator><![CDATA[Plemplem]]></dc:creator><pubDate>Wed, 18 Aug 2004 10:24:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem unter XP Service Pack 2 on Wed, 18 Aug 2004 10:46:42 GMT]]></title><description><![CDATA[<p>ich habe das Thema gesucht, und es besteht keine Gleiche schon diskutiert, oder?</p>
<p>Ich habe den Grund schon gefunden. Es gibt eine neue Feature von Service Pack 2, eine Beschreibung ist wie folgendes:</p>
<blockquote>
<p>Befehlsverweigerung</p>
<p>Die Execution Protection (NX, no execute) soll die Auswirkungen von<br />
Angriffen über Buffer Overflows, Integer Overflows, Heap Overflows,<br />
Format-String-Schwächen und anderen Fehlern minimieren. Ziel solcher<br />
Angriffe ist es, eigenen Code in das System einzuschleusen und auszuführen<br />
[3]. Üblicherweise überschreibt man dazu Bereiche in denen Daten abgelegt<br />
werden, etwa Stacks und Heaps, mit Code und springt ihn durch Manipulation<br />
des Instruction Pointers an. NX verhindert das Ausführen von Code, der in<br />
Datenbereichen abgelegt ist, sofern die als &quot;nicht ausführbar&quot;<br />
gekennzeichnet sind. Ein Angriff des Wurms Lovsan/MSBlaster hätte mit dieser<br />
Funktion auf Windows XP allenfalls den RPC-Dienst zum Absturz gebracht --<br />
den Rechner hätte er nicht infizieren können. NX ist standardmäßig aktiviert<br />
und markiert Datenbereiche wie Stacks und Heaps als nicht-ausführbar.</p>
<p>Um Execution Protection zu implementieren, greift Microsoft auf die<br />
Fähigkeiten moderner 64-Bit-Prozesoren zurück, die Funktionen zur<br />
NX-Kennzeichnung von Speicherbereichen mitbringen. Derzeit stehen dafür der<br />
Athlon64 von AMD und der Itanium von Intel zur Verfügung. Bislang kann nur<br />
der Athlon64 mit dem 32-bittigen Windows XP zuammenarbeiten und dies auch<br />
nur im PAE-Mode (Physical Address Extension). Einige Treiber könnten hier<br />
zukünftig ihren Dienst versagen, da PAE einen 64-Bit-Adressraum benutzt, den<br />
32-Bit-Adapter nicht adressieren können. Microsoft hat deshalb auch den<br />
Hardware Abstraction Layer (HAL) und den Memory Manager modifiziert, um<br />
weitestgehende Kompatibilität zu älteren 32-Bit-Treibern zu erhalten.</p>
<p>Ruft eine Applikation eine als NX markierte Speicherseite auf, löst der<br />
Prozessor eine Exception (STATUS_ACCESS-VIOLATION im User Mode) aus, die in<br />
den meisten Fällen unbehandelt bleibt und zur Terminierung des auslösenden<br />
Prozesses führt. Greift der Kernel auf einen geschützten Speicherbereich zu,<br />
stürzt Windows ab (ATTEMPTED_EXECUTE_OF_NONEXECUTE_MEMORY). Leider schützt<br />
Execution Protection den Kernel Mode im 32-Bit-Windows-XP nur halb: Einzig<br />
der Stack wird als NX markiert. Anders beim 64-Bit-Windows-XP: Außer dem<br />
Stack sind auch die Heaps geschützt.</p>
<p>Einige Applikationen, die etwa zur Laufzeit neuen Programmcode generieren<br />
und ausführen wollen, dürften nach der Installation des Service Packs nicht<br />
mehr funktionieren. Über spezielle Funktionen können neue Anwendungen<br />
ausführbaren Speicher anfordern, ältere Programme müssen dazu überarbeitet<br />
werden.</p>
</blockquote>
<p>Unter XP Service Pack 2 darf ein Programm nicht, ein andere Programm aufzurufen. Ich schreibe keine Virus, und ich weiß nicht, wie man unter XP Service Pack 2 andere Programm aufrufen soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/585261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585261</guid><dc:creator><![CDATA[fubin_22527]]></dc:creator><pubDate>Wed, 18 Aug 2004 10:46:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem unter XP Service Pack 2 on Wed, 18 Aug 2004 10:54:35 GMT]]></title><description><![CDATA[<p>&lt;a href= schrieb:</p>
<blockquote>
<p>Bigwill&quot;&gt;Mann muss halt nur dran denken für die BCB.exe die Datenausführungsverhinderung zu deaktivieren.</p>
</blockquote>
<p>Dasselbe sollte wohl für das von dir geschriebene Programm gelten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/585273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585273</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 18 Aug 2004 10:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem unter XP Service Pack 2 on Wed, 18 Aug 2004 13:39:00 GMT]]></title><description><![CDATA[<p>danke, es ist schon gelöst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/585434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585434</guid><dc:creator><![CDATA[fubin_22527]]></dc:creator><pubDate>Wed, 18 Aug 2004 13:39:00 GMT</pubDate></item></channel></rss>