<?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[CreateProcessWithLogonW Verhalten W2k != XP]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich habe ein Programm geschrieben, ein art Loader, welches mir ein weiteres beliebiges Programm unter einem anderen Benutzernamen startet.<br />
Hintergrund: Das &quot;beliebige&quot; Programm muß Daten auf ein Netztlaufwerk schreiben, welches vom normalen User, also am PC angemeldeten Benutzer, nicht verändert werden darf/kann.<br />
Der Loader verwendet CreateProcessWithLogonW um das beliebige Programm zu starten.<br />
Das Starten funktioniert unter W2k sowie unter XP, allerdings kann das beliebige Programm unter XP seine Daten nicht auf dem Netztlaufwerk ablegen, da keine Netzlaufwerke eingerichtet sind.</p>
<p>Ich hoffe, daß dies so halbwegs verständlich war.<br />
Ich habe das gleiche mit der Kommandozeile versucht nachzustellen.<br />
Ich habe ein Netztlaufwerk x:<br />
Wenn ich nun über RunAs mit dem &quot;speziellen&quot; User eine Kommandozeile öffnen und auf x: zugreifen möchte funktioniert dies unter W2k jedoch nicht unter XP.</p>
<p>Ich muß quasi beim CreateProcessWithLogonW dafür sorgen, daß der neue Prozess mit dem speziellen User die gleiche Umgebung hat als der User, welche CreateProcessWithLogonW ausgeführt hat.</p>
<p>Hat hierfür jemand eine Idee, bzw wurde verstanden, was mein Problem ist?</p>
<p>Hier noch der Code von CreateProcessWithLogonW:</p>
<pre><code class="language-cpp">STARTUPINFOW si;
    PROCESS_INFORMATION ProcessInfo;
    WideString wsProtCopSvr = ExtractFilePath(ParamStr(0)) + &quot;\\ProtCopSvr.exe&quot;;

    memset(&amp;si, 0, sizeof(si));
    si.cb = sizeof(si);

    if(CreateProcessWithLogonW(L&quot;user&quot;, NULL, L&quot;password&quot;, 0, wsProtCopSvr, NULL, NULL, NULL, NULL, &amp;si, &amp;ProcessInfo) == false)
    {
        Log(GetSystemErrorMessage(), &quot;ERROR CreateProcessWithLoginW:&quot;);
        return false;
    }
</code></pre>
<p>Vielen Dank im voraus.<br />
MfG Stephan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231739/createprocesswithlogonw-verhalten-w2k-xp</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 13:22:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231739.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jan 2009 15:09:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CreateProcessWithLogonW Verhalten W2k != XP on Wed, 14 Jan 2009 15:09:01 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich habe ein Programm geschrieben, ein art Loader, welches mir ein weiteres beliebiges Programm unter einem anderen Benutzernamen startet.<br />
Hintergrund: Das &quot;beliebige&quot; Programm muß Daten auf ein Netztlaufwerk schreiben, welches vom normalen User, also am PC angemeldeten Benutzer, nicht verändert werden darf/kann.<br />
Der Loader verwendet CreateProcessWithLogonW um das beliebige Programm zu starten.<br />
Das Starten funktioniert unter W2k sowie unter XP, allerdings kann das beliebige Programm unter XP seine Daten nicht auf dem Netztlaufwerk ablegen, da keine Netzlaufwerke eingerichtet sind.</p>
<p>Ich hoffe, daß dies so halbwegs verständlich war.<br />
Ich habe das gleiche mit der Kommandozeile versucht nachzustellen.<br />
Ich habe ein Netztlaufwerk x:<br />
Wenn ich nun über RunAs mit dem &quot;speziellen&quot; User eine Kommandozeile öffnen und auf x: zugreifen möchte funktioniert dies unter W2k jedoch nicht unter XP.</p>
<p>Ich muß quasi beim CreateProcessWithLogonW dafür sorgen, daß der neue Prozess mit dem speziellen User die gleiche Umgebung hat als der User, welche CreateProcessWithLogonW ausgeführt hat.</p>
<p>Hat hierfür jemand eine Idee, bzw wurde verstanden, was mein Problem ist?</p>
<p>Hier noch der Code von CreateProcessWithLogonW:</p>
<pre><code class="language-cpp">STARTUPINFOW si;
    PROCESS_INFORMATION ProcessInfo;
    WideString wsProtCopSvr = ExtractFilePath(ParamStr(0)) + &quot;\\ProtCopSvr.exe&quot;;

    memset(&amp;si, 0, sizeof(si));
    si.cb = sizeof(si);

    if(CreateProcessWithLogonW(L&quot;user&quot;, NULL, L&quot;password&quot;, 0, wsProtCopSvr, NULL, NULL, NULL, NULL, &amp;si, &amp;ProcessInfo) == false)
    {
        Log(GetSystemErrorMessage(), &quot;ERROR CreateProcessWithLoginW:&quot;);
        return false;
    }
</code></pre>
<p>Vielen Dank im voraus.<br />
MfG Stephan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1645446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1645446</guid><dc:creator><![CDATA[_Stephan_]]></dc:creator><pubDate>Wed, 14 Jan 2009 15:09:01 GMT</pubDate></item></channel></rss>