Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    C++ riavvia-arresta il sistema

    Esiste un codice in C++ che mi permetta di riavviare o arrestare il sistema? se si come si fa?

    grazie.
    Maurizio

  2. #2
    il modo più semplice è questo:

    system("shutdown -f -s"); // s=spegne r=riavvia

    per ulteriori dettagli... [F1] alias guida in linea di windows
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    prova anche questo:

    codice:
    #include <Windows.h>
    
    main() {
       ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0);
    }
    Per maggiori dettagli puoi consultare l'MSDN:
    http://msdn.microsoft.com/library/de...twindowsex.asp

    Puoi trovare tutte le impostazioni per il primo flag, per esempio puoi fare in modo che venga semplicemente disconnesso l'utente...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Orig. inviato da LeleFT
    codice:
    #include <Windows.h>
    
    main() {
       ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0);
    }
    Con Windows XP non riesco a spegnere il PC...
    al massimo, se come parametri passo (0, 0)
    riesco a fare il LOGOFF.
    ...Terrible warlords, good warlords, and an english song

  5. #5
    code:
    ______________________________________
    #include <windows.h>
    main()
    { ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0);
    }
    ______________________________________

    Con questo codice nemmeno io riesco a spegnere il PC sotto Windows XP
    Invece il codice:
    ______________________________________

    system("shutdown -f -s");
    ______________________________________

    funziona solo sotto Windows 2000 e Windows XP
    e non con Windows 95, Windows 98 e Windows ME.

    Chi mi trova un codice che funzioni sotto tutti i Sistemi Operativi precedentemente elencati??? (al massimo escludiamo Win 95)
    Maurizio

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4

    per sistemi operativi NT (NT/2000/XP/2003.net/2005)

    codice:
      HANDLE hToken; 
      TOKEN_PRIVILEGES tkp; 
     
      if (OpenProcessToken (GetCurrentProcess(),  TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
      {
        LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); 
     
        tkp.PrivilegeCount = 1; 
        tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
    
        AdjustTokenPrivileges (hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
    
        if (GetLastError() == ERROR_SUCCESS)
          ExitWindowsEx (EWX_SHUTDOWN, 0);
          /*
            EWX_SHUTDOWN per l'arresto
            EWX_REBOOT per il riavvio
            EWX_LOGOFF per disconnessione
            EWX_POWEROFF per spegnimento
    
            EWX_FORCE puoi OR-arlo con i valori x forzare il processo di chiusura
            EWX_FORCEIFHUNG peuoi OR-arlo se vuoi che siano chiusi forzatamente i processi bloccati
          */
      }

    per sistemi operativi DIVERSI DA NT
    basta usare ExitWindowsEx (EWX_SHUTDOWN, 0);
    senza le altre api (non implementate - quindi da 1
    errore di importazione dll su Win9x/Me)...

    quindi ricorri a GetVersion e LoadLibrary
    x sicurezza e portabilita' al 100%

    per riavviare in DOS (puro dos) devi fare

    asm int 0x19;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.