Fehler mit Sockeln
-
Du musst die winsock.h vor der windows.h einbinden (eigentlich auch unter Vista).
Die .exe funktionier tnicht und emfielt das Programm neu zu installieren.
Such mal hier im Forum nach "vcredist" oder sowas, du musst die Runtime mitliefern oder statisch linken.
-
Gut. Ich werde das mal ausrobieren. Also unter Vitsa läuft es!
Ich werde es gleich mal ausprobierenDas mit dem vcredist ist mir noch nicht ganz klar aber ich werde mal danach suchen.
-
Also das mit dem vcredist verstehe ich wirklich cniht...
Habe hier den Link http://blog.kalmbachnet.de/?postid=80 gefunden, aber das verstehe ich jetzt weirklich cniht. Also was speziell muss ich amchen/installieren, damit ich Programme auch auf anderen PCs nutzen kann? Vllt könnte jemand so eine Art kurze Step-by-Step Anleitung machen^^Wäre wirklich sehr nett!
-
KomischerFehler schrieb:
Also was speziell muss ich amchen/installieren, damit ich Programme auch auf anderen PCs nutzen kann?
Falls du das Visual Studio bzw die Express-Version davon benutzt:
- Entweder statisch linken, findest du glaubich in den Projekt-Optionen (Rechtsklick auf's Projekt->Optionen) im Punkt "C/C++" -> "Codegenerierung".- Oder du lieferst die benötigten DLLs mit
- Oder es müssen an jedem PC, wo die DLLs fehlen, diese installiert werden (http://www.kharchi.eu/wiki/doku.php?id=cpp:faq#warum_funktioniert_meine_exe_auf_einem_anderen_pc_nicht)
-
Vielen Dannk. Also das klappt alles. Programm läuft. Aber es fährt immernoch niht runter. Ich habe bis jetzt folgende Befehle ausprobiert:
system("%systemroot%\System32\Shutdown.exe -s -f -t 0");
ExitWindowsEx(EWX_POWEROFF|EWX_FORCE,0);Beide das selbe Ergebniss Programm geht aus(Rückgabewert 0)
aber der Pc bleibt an. Noch jemand eine Idee???
-
Ich habe jetzt mit folgendem Quellcode versucht ob die Funktion allgemein geht. Auf 2 vershciedenen Rechner macht das heir auch nichts außer das Programm schließen:
#include <windows.h> #include <iostream> int main() { ExitWindowsEx(EWX_POWEROFF|EWX_FORCE,0); return 0; }Weiß einer warum diese Funktionnciht läuft und hat eine Alternative/weiß wie man das Problem behebt?
-
MSDN schrieb:
To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege.
-
Und wie setze ich das speziell um?
-
Also bei disem beispiel, was müsste ich einfügen um das herunterfahren zu ermöglichen?
#include <windows.h>
#include <iostream>int main()
{ExitWindowsEx(EWX_POWEROFF|EWX_FORCE,0);
return 0;}
-
Ich habe über ExitWindoWEx das hier eingefügt.Bringt leider garnichts

HANDLE hToken; // handle to process token
TOKEN_PRIVILEGES tkp; // pointer to token structureBOOL fResult; // system shutdown flag
// Get the current process token handle so we can get shutdown
// privilege.if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
ErrorHandler("OpenProcessToken failed.");// Get the LUID for shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&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, &tkp, 0,
(PTOKEN_PRIVILEGES) NULL, 0);// Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError() != ERROR_SUCCESS)
ErrorHandler("AdjustTokenPrivileges enable failed.");// Display the shutdown dialog box and start the time-out countdown.
fResult = InitiateSystemShutdown(
NULL, // shut down local computer
"Click on the main window and press \
the Escape key to cancel shutdown.", // message to user
20, // time-out period
FALSE, // ask user to close apps
TRUE); // reboot after shutdownif (!fResult)
{
ErrorHandler("InitiateSystemShutdown failed.");}
// Disable shutdown privilege.
tkp.Privileges[0].Attributes = 0;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES) NULL, 0);if (GetLastError() != ERROR_SUCCESS)
{
ErrorHandler("AdjustTokenPrivileges disable failed.");
}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 structureBOOL 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, &hToken)){
ErrorHandler("OpenProcessToken failed.");
}// Get the LUID for shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&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, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);