sevenace
Messages postés41Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention23 février 2009
-
21 juil. 2005 à 10:00
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 2009
-
22 juil. 2005 à 08:47
Hello ,
Ca fait un petit moment que je cherche un procédé pour quitter windows, mais je n'y arrive pas !!!
Donc, voila en fait j'ai un programme qui vérifie si un processus est
toujours dans le task manager, grâce à un timer, et une fois qu'il
n'est plus présent, je dois arrêter le PC.
Ensuite voici ma fonction :
public static void reboot()
{
//Déclaration des variables
bool IsSuccess = true;
TokenLUID Privilege;
//Obtention d'un jeton de process pour le process courant
IntPtr ProcessHandler = GetCurrentProcess();//obtention du process courant
IntPtr ProcessToken = IntPtr.Zero;//initialisation par défaut du jeton de process
IsSuccess = OpenProcessToken(ProcessHandler, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref ProcessToken);
//Configuration du jeton de privilèges
Privilege.Count = 1;//nb de privilèges accordés
Privilege.Luid = 0;//initialisation par défaut du LUID
IsSuccess &= LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref Privilege.Luid);
Privilege.Attr = SE_PRIVILEGE_ENABLED;//autorisation des privilèges
//Configuration du privilege pour le process courant
IsSuccess &= AdjustTokenPrivileges(ProcessToken, false, ref Privilege, 0, IntPtr.Zero, IntPtr.Zero);
//Vérification du succes des paramétrages précédents
if (IsSuccess == true)
{
//Fermeture et redémarrage de windows avec forçage
//pour une raison de maintenance liée à l'application
ExitWindowsEx(EWX_REBOOT + EWX_FORCE, REASON_MAJOR_APPLICATION | REASON_MINOR_MAINTENANCE);
}
}
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 21 juil. 2005 à 14:09
Woow ! toutes ses permissions sont nécessaires !? On ne peut pas s'en passer !? Euh, y'a un truc qui me parait bizarre, pourquoi ce Pack = 1 dans la dernière structure !?
Sevenace, avec PInvoke on peut appeler des librairies non managées, sinon je ne t'aurais pas indiqué la méthode ExitWindowsEx.