<?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[Pc herunterfahren]]></title><description><![CDATA[<p>Also, weil der letzte Thread eigentlich ein anderes Thema behandelt stelle ich meine Frage einmal hier.Ich habe in einem etwas größeren Programm einen Teil der den Pc ausschlaten soll. Das klappt aber ledier nicht.Ich habe also einen kleinen Test gemacht:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;

int main()
{

	ExitWindowsEx(EWX_POWEROFF|EWX_FORCE,0);
	return 0;

}
</code></pre>
<p>Das Programm geht mit dem Rückgabewert 0 aus aber der Pc bleibt an. Das selbe bei<br />
system(&quot;%systemroot%\System32\Shutdown.exe -s -f -t 0&quot;);</p>
<p>Wieso geht der Pc nicht aus?</p>
<p>Habe es auf einem Vista und auf einem anderen XP Rechner ausprobiert. Es geht nirgendwo...<br />
Weiß einer Rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220548/pc-herunterfahren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 13:15:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220548.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 Aug 2008 22:19:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pc herunterfahren on Sun, 17 Aug 2008 22:19:58 GMT]]></title><description><![CDATA[<p>Also, weil der letzte Thread eigentlich ein anderes Thema behandelt stelle ich meine Frage einmal hier.Ich habe in einem etwas größeren Programm einen Teil der den Pc ausschlaten soll. Das klappt aber ledier nicht.Ich habe also einen kleinen Test gemacht:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;

int main()
{

	ExitWindowsEx(EWX_POWEROFF|EWX_FORCE,0);
	return 0;

}
</code></pre>
<p>Das Programm geht mit dem Rückgabewert 0 aus aber der Pc bleibt an. Das selbe bei<br />
system(&quot;%systemroot%\System32\Shutdown.exe -s -f -t 0&quot;);</p>
<p>Wieso geht der Pc nicht aus?</p>
<p>Habe es auf einem Vista und auf einem anderen XP Rechner ausprobiert. Es geht nirgendwo...<br />
Weiß einer Rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566640</guid><dc:creator><![CDATA[KomischerFehler]]></dc:creator><pubDate>Sun, 17 Aug 2008 22:19:58 GMT</pubDate></item><item><title><![CDATA[Reply to Pc herunterfahren on Sun, 17 Aug 2008 22:38:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;

int main()
{

HANDLE hToken;              // handle to process token  
TOKEN_PRIVILEGES tkp;       // pointer to token structure  

BOOL fResult;               // system shutdown flag

// Get the current process token handle so we can get shutdown
// privilege.

if (!OpenProcessToken(GetCurrentProcess(),
        TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &amp;hToken))
    ErrorHandler(&quot;OpenProcessToken failed.&quot;);

// Get the LUID for shutdown privilege.

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,

        &amp;tkp.Privileges[0].Luid);

tkp.PrivilegeCount = 1;  // one privilege to set    [c]
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

// Get shutdown privilege for this process.

AdjustTokenPrivileges(hToken, FALSE, &amp;tkp, 0,
    (PTOKEN_PRIVILEGES) NULL, 0);

// Cannot test the return value of AdjustTokenPrivileges.

if (GetLastError() != ERROR_SUCCESS)
    ErrorHandler(&quot;AdjustTokenPrivileges enable failed.&quot;);

// Display the shutdown dialog box and start the time-out countdown.

fResult = InitiateSystemShutdown(
    NULL,                                  // shut down local computer
    &quot;Click on the main window and press \
     the Escape key to cancel shutdown.&quot;,  // message to user
    20,                                    // time-out period
    FALSE,                                 // ask user to close apps
    TRUE);                                 // reboot after shutdown

if (!fResult)
{
    ErrorHandler(&quot;InitiateSystemShutdown failed.&quot;);

}

// Disable shutdown privilege.

tkp.Privileges[0].Attributes = 0;
AdjustTokenPrivileges(hToken, FALSE, &amp;tkp, 0,
        (PTOKEN_PRIVILEGES) NULL, 0);

if (GetLastError() != ERROR_SUCCESS)
{
    ErrorHandler(&quot;AdjustTokenPrivileges disable failed.&quot;);
}

If the AbortSystemShutdown function is executed in the time-out period specified by InitiateSystemShutdown, the system does not shut down. In this example, the user can prevent the system from shutting down by clicking on the application's main window and pressing the ESC key. The example processes the keystroke by calling AbortSystemShutdown.

HANDLE hToken;              // handle to process token  
TOKEN_PRIVILEGES tkp;       // pointer to token structure  

BOOL fResult;               // system shutdown flag

case WM_KEYDOWN:

    // Process only the Escape key.

    if (wParam != VK_ESCAPE)
    {
        break;
    }

    // Get the current process token handle  so we can get shutdown
    // privilege.

    if (!OpenProcessToken(GetCurrentProcess(),
            TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &amp;hToken))

    {
        ErrorHandler(&quot;OpenProcessToken failed.&quot;);
    }

    // Get the LUID for shutdown privilege.

    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
            &amp;tkp.Privileges[0].Luid);

    tkp.PrivilegeCount = 1;  // one privilege to set    
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    // Get shutdown privilege for this process.

    AdjustTokenPrivileges(hToken, FALSE, &amp;tkp, 0,
        (PTOKEN_PRIVILEGES)NULL, 0); 

    ExitWindowsEx(EWX_POWEROFF|EWX_FORCE,0);
    return 0;

}
</code></pre>
<p>Das geht ledier auch nicht...</p>
<p>Keiner mehr eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566652</guid><dc:creator><![CDATA[KomischerFehler]]></dc:creator><pubDate>Sun, 17 Aug 2008 22:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Pc herunterfahren on Sun, 17 Aug 2008 22:52:59 GMT]]></title><description><![CDATA[<p>falls es nicht unbedingt mit der WinAPI sein muss, könntest du</p>
<pre><code class="language-cpp">system(&quot;C:\\WINDOWS\\System32\\shutdown.exe -s -f -t 0 &quot;);
</code></pre>
<p>verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566653</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 17 Aug 2008 22:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to Pc herunterfahren on Sun, 17 Aug 2008 22:53:52 GMT]]></title><description><![CDATA[<p>Wie bereits ganz oben vermerkt funktioniert das ledier auch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";("
      alt="😢"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566654</guid><dc:creator><![CDATA[KomischerFehler]]></dc:creator><pubDate>Sun, 17 Aug 2008 22:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to Pc herunterfahren on Mon, 18 Aug 2008 07:30:32 GMT]]></title><description><![CDATA[<p>KomischerFehler schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;

int main()
{

	ExitWindowsEx(EWX_POWEROFF|EWX_FORCE,0);
	return 0;

}
</code></pre>
<p>Das Programm geht mit dem Rückgabewert 0 aus aber der Pc bleibt an.</p>
</blockquote>
<p>Nun ja, du zwnigst dein Programm ja förmlich dazu dir nur eine Erfolgsmeldung zu liefern. Es kann dir ja gar nicht das Fehlschlagen berichten.</p>
<p>Unter XP und höher muss man für den Prozess erst das Privileg zum Runterfahren des Systems aktivieren. Dashast du ja anscheinend mittlerweile auch schon herausgefunden. Aber anstatt eigen fehlermeldungen auszugeben, solltest du dir mal die fehlermeldungen vom System ausgeben lassen mit GetLastError und FormatMessage, damit du mal siehst WARUM die betreffende Funktion fehlgeschlagen ist.<br />
Desweitern, warum debuggst du den Cod enicht und guckst, an welcher Stelle er aussteigt? Diese Information wäre auch nicht ganz uninteressant, wenn man dir helfen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566658</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Mon, 18 Aug 2008 07:30:32 GMT</pubDate></item><item><title><![CDATA[Reply to Pc herunterfahren on Mon, 18 Aug 2008 06:28:44 GMT]]></title><description><![CDATA[<p>Du hast keine Admin.Rechte bzw. das Privileg ist nicht freigeschaltet... schau einfach in die Doku und in das dortige Beispiel...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566694</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 18 Aug 2008 06:28:44 GMT</pubDate></item><item><title><![CDATA[Reply to Pc herunterfahren on Mon, 18 Aug 2008 07:31:32 GMT]]></title><description><![CDATA[<p>Selbst bei einem Administrator müsste das Privileg erst aktiviert werden, wenn ich mich nicht irre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566715</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Mon, 18 Aug 2008 07:31:32 GMT</pubDate></item><item><title><![CDATA[Reply to Pc herunterfahren on Mon, 18 Aug 2008 11:21:06 GMT]]></title><description><![CDATA[<p>@Luckie: Habe ich alles gemacht. Habe das nur der übersichtlichkeit wegen hier rausgeschrieben.GetLastError lieferte aber leider auch ncihts wirklich wichtiges.</p>
<p>Mittlerweile funktioniert die Nicht-WinAPI Methode(system(...)].<br />
Hatte da versehntlich einen Strich in die falsche Richtung... *Gegen Kopf Schlag*<br />
Mit WinAPI wills immernoch nicht... ABer das ist eigentlich cniht so schlimm. Danke an alle für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566872</guid><dc:creator><![CDATA[KomischerFehler]]></dc:creator><pubDate>Mon, 18 Aug 2008 11:21:06 GMT</pubDate></item><item><title><![CDATA[Reply to Pc herunterfahren on Mon, 18 Aug 2008 11:28:27 GMT]]></title><description><![CDATA[<p>KomischerFehler schrieb:</p>
<blockquote>
<p>GetLastError lieferte aber leider auch ncihts wirklich wichtiges.</p>
</blockquote>
<p>Solange der Fehler nicht wichtig ist, ist ja gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566875</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 18 Aug 2008 11:28:27 GMT</pubDate></item></channel></rss>