Eteindre une machine avec API

Résolu
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 - 10 mars 2005 à 16:11
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 - 10 mars 2005 à 18:01
Bonjour je voudrai savoir comment faire pour eteindre un post avec les api windows
J ai essayer ExitWindowsEx un truc dans le genre et a chaque fois il ferme ma session
(J ai 2000)
merci
a+

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2005 à 16:49
Il s'agit bien de ExitWindowsEx mais avec des paramètres :



ExitWindowsEx( 1 , 0 )


mais il te faut d'abords les autorisations necessaires



donc tu ne les as pas, avant exitwindowsex tu fais :
Dim hProc As Long

Dim hToken As Long

Dim mLUID As LUID

Dim mPriv As TOKEN_PRIVILEGES

Dim mNewPriv As TOKEN_PRIVILEGES



hProc = GetCurrentProcess

OpenProcessToken hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken

LookupPrivilegeValue "", "SeShutdownPrivilege", mLUID

mPriv.PrivilegeCount = 1

mPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED

mPriv.Privileges(0).pLuid = mLUID



AdjustTokenPrivileges hToken, False, mPriv, 4 + (12 * mPriv.PrivilegeCount), mNewPriv, 4 + (12 * mNewPriv.PrivilegeCount)



avec en déclaration :

Public Const ANYSIZE_ARRAY = 1



Public Type LUID

LowPart As Long

HighPart As Long

End Type



Public Type LUID_AND_ATTRIBUTES

pLuid As LUID

Attributes As Long

End Type



Public Type TOKEN_PRIVILEGES

PrivilegeCount As Long

Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES

End Type





Je te laisse remettre tout ça dans le bon ordre



<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
3
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
10 mars 2005 à 17:17
Ok merci tu avais juste oublier de préciser qu il fallait declarer les fonctions je les ai rajouté mais quannd je declare LookupPrivilegeValue il met type definie par l utilisatuer non definie
tu as une solution
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2005 à 17:41
As-tu fais la bonne déclaration :



Private
Declare Function LookupPrivilegeValue Lib "advapi32"
Alias"LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal
lpName AsString, lpLuid As LUID) As Long


Dans certaine déclaration il apparait un type LARGEINTEGER qui est en fait la même chose que LUID

<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
10 mars 2005 à 18:01
C est LARGEINTEGER
qui ne marchait pas J ai mis la declaration que tu ma donner et sa marche MERCI !!
0
Rejoignez-nous