| |
|
|
|
Beschreibung:
InitiateSystemShutdown fährt den calculateur pour einem Zeitintervall herunter et gibt dabei une Message aus. cet Funktion gibt es seulement sous NT-basierten Windowssystemen.
Deklaration:
DEF @InitiateSystemShutdown(5) !ADVAPI32,InitiateSystemShutdownA
paramètre:
1.paramètre: Adresse eines Cordes ou bien Bereichsvariable avec einem String,, qui den Computernamen des herunterzufahrenden Systems contient. Ist cette paramètre un Leerstring ou bien 0, wird cela aktuelle System heruntergefahren. 2.paramètre: Adresse eines Cordes ou bien Bereichsvariable avec einem String,, qui une Message contient, qui beim Herunterfahren angezeigt volonté soll. cette paramètre peux 0 son. 3.paramètre: Zeit jusqu'à zum Herunterfahren des Rechners dans Sekunden comme LongInt. 4.paramètre: Flag, qui angibt si alle Anwendungen avec dem Herunterfahren d'accord son doit.=> 1 = sans demande herunterfahren. 0 = Herunterfahren démolir, si une Anwendung pas son OK gibt. Um calculateur überhaupt herunterfahren trop peut, doit qui Privilegien SeShutdownPrivilege et SeRemoteShutdownPrivilege vorhanden son et aktiviert volonté. 5.paramètre: Flag, qui angibt si pour dem Herunterfahren un Neustart des Rechners avoir lieu soll.=> 1 = Neustart 0 = seulement herunterfahren
Rückgabewert:
1 chez Erfolg, 0 chez einem faute.
Beispiele:
KompilierenMarqueSéparationDEF @InitiateSystemShutdown(5) !"ADVAPI32","InitiateSystemShutdownA"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA“
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA"
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken"
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges”
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess"
DEF @CloseHandle(1) !"kernel32","CloseHandle“
Declare Message$,TIME&,NewState#,token#,System$
Declare Privileg#,Luid#
dim token#,4
DIM NewState#,16
DIM Luid#,8
DIM Privileg#,256
Long NewState#,0=1 Nur ein Privileg soll geändert werden
Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
Print @OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#)
STRING Privileg#,0="SeShutdownPrivilege"
Print @LookupPrivilegeValue(0,Privileg#,LUID#)
Byte NewState#,4=@Byte(Luid#,0)
Byte NewState#,5=@Byte(Luid#,1)
Byte NewState#,6=@Byte(Luid#,2)
Byte NewState#,7=@Byte(Luid#,3)
Byte NewState#,8=@Byte(Luid#,4)
Byte NewState#,9=@Byte(Luid#,5)
Byte NewState#,10=@Byte(Luid#,6)
Byte NewState#,11=@Byte(Luid#,7)
Print @AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
Long NewState#,0=1 Nur ein Privileg soll geändert werden
Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
Print @OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#) Es wird ein Process mit dem Handle Token gestartet, der Privilegien für mein Programm einstellen soll.
STRING Privileg#,0="SeRemoteShutdownPrivilege"
Print @LookupPrivilegeValue(0,Privileg#,LUID#)
Byte NewState#,4=@Byte(Luid#,0)
Byte NewState#,5=@Byte(Luid#,1)
Byte NewState#,6=@Byte(Luid#,2)
Byte NewState#,7=@Byte(Luid#,3)
Byte NewState#,8=@Byte(Luid#,4)
Byte NewState#,9=@Byte(Luid#,5)
Byte NewState#,10=@Byte(Luid#,6)
Byte NewState#,11=@Byte(Luid#,7)
Print @AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
LET TIME&=60
LET Message$="Der Rechner wird neu gestartet!"
Print @InitiateSystemShutdown(@ADDR(System$),@ADDR(Message$),TIME&,1,1)
@CloseHandle(@LONG(Token#,0))
Dispose Luid#
Dispose Privileg#
Dispose NewState#
Dispose token#
Waitinput
[keywords:21d2f6baf0] Herunterfahren Shutdown Dialog Message Zeit Zeitintervall avertissement [/keywords:21d2f6baf0] |
|
|
| |
|
|