Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Systemshutdown abbrechen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.01.2006, 22:30 Uhr
~Sword_xx
Gast


Hallo Leute,

ich möchte ein Programm schreiben, was mitkriegt wenn man windows herunterfahren möchte.
dann den shutdown anhält,
und dann per popup sagt: "Achtung Programm xyz läuft noch soll wirklich heruntergefahren werden"

und wenn ich dann auf "Ja" klicke wird der Shutdown weiterdurchgeführt.
und wenn ich auf "Nein" klicke wird der Shutdown von windows abgebrochen.

Auf den Shutdown hätte ich bis jetzt bei WM_ENDSESSION reagiert.
udn dann funktioniert auch schon.....

den shutdown selbst wollte ich mit AbortSystemShutdown abbrechen....
aber das funktioniert nicht... ich hab folgendes probiert:

if (AbortSystemShutdown("Localhost") == 0)
MessageBox("failed");

if (AbortSystemShutdown("127.0.0.1") == 0)
MessageBox("failed");

if (AbortSystemShutdown(NULL) == 0)
MessageBox("failed");

ich krieg immer 0 zurück => failed und der shutdown wird auch weiter durchgeführt.
könnt ihr mir helfen?

WICHTIG: also mein programm startet den shutdown nicht, der wird ganz normal über
Start->Computer ausschalten oder so herbeigeführt.

hoffe jemand kann mir helfen!
Danke swordMaster
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.01.2006, 19:34 Uhr
sam-semi



Hi ~Sword_xx,

ich hab mich zwar noch nie mit diesen Funktionen auseinandergesetzt, jedoch steht in der MSDN dass man dazu das SE_SHUTDOWN_NAME Privileg benötigt, um die Funktion AbortSystemShutdown auszuführen.Hab dazu in der MSDN folgenden Beispielcode gefunden:


C++:
BOOL PreventSystemShutdown()
{
   HANDLE hToken;              // handle to process token
   TOKEN_PRIVILEGES tkp;       // pointer to token structure

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

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

   // 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);

   if (GetLastError() != ERROR_SUCCESS)
      return FALSE;

   // Prevent the system from shutting down.

   if ( !AbortSystemShutdown(NULL) )
      return FALSE;

   // Disable shutdown privilege.

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

   return TRUE;
}



Ich hoffe das hilft dir wenigstens etwas weiter

Schönen Gruß
sam-semi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: