BlackBoard » Design, Programmierung & Entwicklung » Programmieren » C Windows API Schrott? » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Windows API Schrott?
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
scr!pTk!d scr!pTk!d ist männlich
Member


Dabei seit: 10.11.2002
Beiträge: 276

Windows API Schrott?       Zum Anfang der Seite springen

Ich wollte in ein C Programm eine Funktion zum Herunterfahren des PC einbauen und hierfür die API ExitWindowsEx(UINT uFlags, DWORD dwReason) verwenden. Allerdings zeigt diese überhaupt keine Wirkung. Hier ein Source-Ausschnitt:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
#define EWX_SHUTDOWN 0x08

...

ExitWindowsEx(EWX_SHUTDOWN,0);

...

return 0;


Weder 9x/ME noch 2000/XP zeigt sich beeindruckt. Bei 9x erscheint eine Warnung Windows würde heruntergefahren und alle Dokumente sollten gespeichert werden, allerdings geschieht nichts. Bei 2000/XP klappt nur Logoff (mit uFlags 0x00).
MfG

__________________
ceterum censeo carthaginem esse delendam
23.10.2003 22:02 scr!pTk!d ist offline E-Mail an scr!pTk!d senden Beiträge von scr!pTk!d suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

für NT/2k muss man noch dem progreamm die benötigten Rechte zuschieben... am besten www.cdw.de.vu unter tutorials => kommentierter sourcecode von shutdown(tut1) (mein erstes Programm in asm Augenzwinkern ) da sind praktisch die ganzen APIs aufgelistet...
außerdem:
; EWX_LOGOFF equ 0
; EWX_SHUTDOWN equ 1
; EWX_REBOOT equ 2
; EWX_FORCE equ 4
; EWX_POWEROFF equ 8
also bei meinem rechner geschit bei x8 auch nix (zu alt, noch keine Unterstützung für) und für den Rest unter 2k/xp/NT muss man wie gesagt sich die privilegien einheimsen.
24.10.2003 14:48 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
scr!pTk!d scr!pTk!d ist männlich
Member


Dabei seit: 10.11.2002
Beiträge: 276

Themenstarter Thema begonnen von scr!pTk!d
      Zum Anfang der Seite springen

Habs geschafft. Falls jemand das gleiche Problem haben sollte:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
int EnableShutdownPrivileges( )
{
   HANDLE token;
   TOKEN_PRIVILEGES privileges;
   if( !OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES
                         | TOKEN_QUERY, &token ))
return -1;   
LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &privileges.Privileges[ 0 ].Luid );
   privileges.PrivilegeCount = 1;
   privileges.Privileges[ 0 ].Attributes = SE_PRIVILEGE_ENABLED;
   AdjustTokenPrivileges( token, FALSE, &privileges, 0, (PTOKEN_PRIVILEGES)NULL, 0 );
   if( GetLastError() != ERROR_SUCCESS )
      return -2;
}


__________________
ceterum censeo carthaginem esse delendam

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von scr!pTk!d: 24.10.2003 18:56.

24.10.2003 18:56 scr!pTk!d ist offline E-Mail an scr!pTk!d senden Beiträge von scr!pTk!d suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » C Windows API Schrott?

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH