Tjoa, ich hab da n Problem: ich bin noch ein echter ASM - Coding "Neuling"
und folgende Zeile funktioniert einfach nicht: "invoke ExitWindowsEx, 1, 0"!! :blink:
"invoke ExitWindowsEx, 0, 0" funktioniert, "invoke ExitWindowsEx, 1, 0" und
"invoke ExitWindowsEx, 2, 0" nicht!! :blink:
Was kann ich tun??
ExitWindowsEx
Moderatoren: crack, Krüsty, Marwin
hm, wahrscheinlihc hast du XP/2000 und wunderst dich warum man nicht herunterfahren kann
... das ist leider bei NT Systemen nicht so einfach,
wenn man die Doku durchliest, dann steht da dass der Process erstmal die Rechte dafür erringen muss...
ich habs vor ein paar Jahren mal gemacht (einen MS beispielcode von C nach asm übersetzt):
http://www.cdw.de.vu/Tutorial1.zip
das wichtigste ist:
wobei ich inzwichen einen komplett anderen Programmierstil drauf habe, aber egal 
wenn man die Doku durchliest, dann steht da dass der Process erstmal die Rechte dafür erringen muss...
ich habs vor ein paar Jahren mal gemacht (einen MS beispielcode von C nach asm übersetzt):
http://www.cdw.de.vu/Tutorial1.zip
das wichtigste ist:
Code: Alles auswählen
LOCAL tkp:TOKEN_PRIVILEGES
LOCAL hToken: HANDLE
call GetCurrentProcess ;das bracuchen wir jetzt für NT/2000/XP
mov dwCurrentProcess,eax;die Process ID
lea eax,hToken ;hToken adresse ins eax laden
push eax ; argument auf Stack
push 28h ; TOKEN_ADJUST_PRIVILEGES(0x0020) xor TOKEN_QUERY(0x008)=28 => siehe WINNT.h
push dwCurrentProcess ; unsere ProcessID
call OpenProcessToken
lea eax,tkp.Privileges[0].Luid
push eax
push offset shutdown ; wir wollen einen shutdown machen <=shutdown ist ein string "SeShutdownPrivilege"
push 0
call LookupPrivilegeValue ;und wir kriegen die doch
;wer es hier nicht so ganz durchblickt, sollte
;in die winAPIdoku schauen...z.b MSDN
mov tkp.PrivilegeCount,1
mov tkp.Privileges[0].Attributes,SE_PRIVILEGE_ENABLED;enable dies! (wenn der benutzer keine Berechtigung dazu hat
; wird trotzdem nix daraus!
push 0
push 0
push 0
lea eax,tkp
push eax
push 0;False
push hToken
call AdjustTokenPrivileges
push 0;wird nicht beachtet, da noch reserviert
push dwParam1; unseren Parameter
call ExitWindowsEx