begin process at 2010 03 20 11:57:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > LISTEUR DES PROCESSUS ET DE SES CHILDS. KILL N'IMPORTE QUEL PROCESS (PRIVILEGE SE_DEBUG_NAME)

LISTEUR DES PROCESSUS ET DE SES CHILDS. KILL N'IMPORTE QUEL PROCESS (PRIVILEGE SE_DEBUG_NAME)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Classé sous :liste, processus, kill, privilège, api Niveau :Initié Date de création :03/07/2005 Date de mise à jour :05/07/2005 02:07:22 Vu / téléchargé :8 314 / 1 200

Auteur : taye78

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

Code assez simple mais tout de même commenté. Exemple d'utilisation de plusieurs API tel que GetWindow, GetClassName, GetWindowText, GetWindowThreadProcessId, OpenProcess, OpenProcessToken, TerminateProcess, EnumProcess, GetCurrentProcessId, LookupPrivilegeValue, AdjustTokenPrivileges, ShowWindow, WindowFromPoint, SetForegroundWindow, SetActiveWindow, CreateToolhelp32Snapshot, Module32First etc...
Vous permez de trouver quelques info. sur les process ainsi de connaître leurs childs (boutton, label, edit etc.).
Il y a aussi un petit code pour rechercher un process avec plusieurs critères de recherche possible (avec wildcards ? *).
Utilisation d'un StringGrid pour l'affichage des résultats de la recherche.
La recherche est faîte dans un THREAD pour ne pas ralentir le programme.
Le process se met en SE_DEBUG_NAME pour pouvoir fermer(/accéder) n'importe quel processus.

Bref, aucun composant externe; Seulement API + Compo. standard
Code fait "à la va vite", donc il doit surment être façilement optimisable

--> Exemple de comment avoir un scrollbar horizonte dans une listbox

Source

  • [...]
  • function SetPrivDebug: boolean; //fonction pour obtenir le droit de debug
  • var
  • dwPid: DWORD;
  • hProcess, hToken : THandle;
  • tpDebug, tpPDebug: TOKEN_PRIVILEGES;
  • rLenght: Cardinal;
  • begin
  • Result := False;
  • dwPid := GetCurrentProcessId; //on obtien le PID de notre process
  • hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, dwPid); //on obtien un handle pour accéder au process qui a pour pid dwPid
  • if hProcess = 0 then //si OpenProcess a echoué
  • begin
  • ShowMessage('Error nº' + IntToStr(GetLastError) + ^M + SysErrorMessage(GetLastError));
  • Exit;
  • end;
  • if OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, hToken) = NULL then //on obtien un handle sur les token de hProcess et on le met dans hToken
  • begin
  • ShowMessage('Can''t access token''s right' + ^M + 'Error nº' +
  • IntToStr(GetLastError) + ^M + SysErrorMessage(GetLastError));
  • Exit; //^M saute une ligne
  • end;
  • if LookupPrivilegeValue(nil, SE_DEBUG_NAME, tpDebug.Privileges[0].Luid) = NULL then
  • begin //on trouve le LUID (locally unique identifier) du privilège et on le met dans tpDebug.Privileges[0].Luid
  • ShowMessage('Can''t retrieve the locally unique identifier (LUID)');
  • Exit;
  • end;
  • tpDebug.PrivilegeCount := 1; //nombre de privilège que l'on va activer
  • tpDebug.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; //action a faire, ici on veut activer le privilège donc SE_PRIVIEGE_ENABLED
  • rLenght := 0;
  • tpPDebug := tpDebug;
  • AdjustTokenPrivileges(hToken, False, tpDebug, SizeOf(tpDebug), tpPDebug, rLenght);
  • //on active le privilege de debug (SE_DEBUG_NAME) , adjusttokenprivileges rempli tpPDebug avec l'ancien privilège
  • Result := GetLastError = ERROR_SUCCESS; //la condition est vérifiée si tout s'est bien passé
  • CloseHandle(hToken); //on ferme le handle hToken
  • end;
  • [...]
[...]
function SetPrivDebug: boolean;   //fonction pour obtenir le droit de debug
var
  dwPid: DWORD;
  hProcess, hToken : THandle;
  tpDebug, tpPDebug: TOKEN_PRIVILEGES;
  rLenght: Cardinal;
begin
  Result := False;

  dwPid := GetCurrentProcessId; //on obtien le PID de notre process
  hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, dwPid); //on obtien un handle pour accéder au process qui a pour pid dwPid
  if hProcess = 0 then     //si OpenProcess a echoué
  begin
    ShowMessage('Error nº' + IntToStr(GetLastError) + ^M + SysErrorMessage(GetLastError));
    Exit;
  end;
  if OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, hToken) = NULL then  //on obtien un handle sur les token de hProcess et on le met dans hToken
  begin
    ShowMessage('Can''t access token''s right' + ^M + 'Error nº' +
                IntToStr(GetLastError) + ^M + SysErrorMessage(GetLastError));
    Exit;        //^M saute une ligne
  end;

  if LookupPrivilegeValue(nil, SE_DEBUG_NAME, tpDebug.Privileges[0].Luid) = NULL then
  begin //on trouve le LUID (locally unique identifier) du privilège et on le met dans tpDebug.Privileges[0].Luid
    ShowMessage('Can''t retrieve the locally unique identifier (LUID)');
    Exit;
  end;
    tpDebug.PrivilegeCount := 1;     //nombre de privilège que l'on va activer
    tpDebug.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; //action a faire, ici on veut activer le privilège donc SE_PRIVIEGE_ENABLED
    rLenght := 0;
    tpPDebug := tpDebug;
    AdjustTokenPrivileges(hToken, False, tpDebug, SizeOf(tpDebug), tpPDebug, rLenght);
    //on active le privilege de debug (SE_DEBUG_NAME) , adjusttokenprivileges rempli tpPDebug avec l'ancien privilège
    Result := GetLastError = ERROR_SUCCESS; //la condition est vérifiée si tout s'est bien passé

    CloseHandle(hToken); //on ferme le handle hToken
end;
[...]

 Conclusion

//ZIP


wExplorer

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 juillet 2005 16:28:05 :
Correction d'un commentaire
05 juillet 2005 02:07:22 :
Correction d'un bug avec la scrollbar horizontale

 Sources du même auteur

Source avec Zip ASTUCE: COMMENT CHANGER LA TAILLE DE NOS LIGNES DANS UN TLIS...
Source avec Zip CRÉATION D'UN POINT DE RESTAURATION (ME/XP)
Source avec Zip SURVEILLER LES ACTIVITÉS D'UN DOSSIER ET DE SES SOUS-DOSSIER...
Source avec Zip BLOQUER L'ACCÈS À UN VOLUME (LECTEUR: DISQUE DUR, DISQUETTE,...
METTRE (OU RETIRER) LE MONITEUR EN (DE LA) VEILLE

 Sources de la même categorie

Source avec une capture VOTRE PROGRAMME DE MAIL COMME CLIENT MAIL PAR DÉFAUT SOUS WI... par MAURICIO
SYNCHRONISATION DE THREADS DANS DES DLL par saib
Source avec Zip Source avec une capture DISKINFO V1.0.0 par Christophe67
Source avec Zip Source avec une capture MEMORYSTATUS par Christophe67
Source avec Zip Source avec une capture GLIBWMI VCL COMPONENT LIBRARY 1.8B par Neftali

 Sources en rapport avec celle ci

Source avec Zip OBTENIR LE PROPRIÉTAIRE D'UN FICHIER (WIN32;NTFS) par ILP
Source avec Zip Source avec une capture AUTO-COMPLÉTION D'UN CONTRÔLE DE SAISIE par Bacterius
Source avec Zip Source avec une capture PACKAGE MICROSOFT par blueperfect
Source avec Zip Source avec une capture PLANIFIER L'EXTINCTION DE WINDOWS OU DE PROCESSUS par elguevel
Source avec Zip JEUX AVEC PLUSIEURS ECRANS : PAS DE REDUCTION LORS DE LA PER... par Sylvainlefou

Commentaires et avis

Commentaire de Alain Proviste le 03/07/2005 15:31:50 administrateur CS

code très bien commenté !
néanmoins j'aurais apprécié de voir apparaitre :
" obtenir un manipulateur sur le jeton processus hProcess "

Commentaire de taye78 le 03/07/2005 16:23:29

haha 8)

Commentaire de MasterHack le 04/07/2005 01:31:01

pas mal du tout,Merci a toi ;)

Commentaire de Nebula le 10/07/2005 05:51:54

C'est quand même plus joli en C, tous ces appels d'API :)

Commentaire de kernel2007 le 18/11/2006 19:13:35

Salut ,je suis débutant en matiere de programmation et je travail sur un projet,mais il y a un probléme qui m'intrigue
est ce que vous pouvez m'aider ladsus
le probléme se résume comme suit :
j'ai le nom et le nom de classe d'un window parent d'une application extérne alors j'ai obtenu son handle par la fonction
Findwindow
mais le probléme est comment obtenir le handle de child window tout en sachant le nom et le nom de classe de ce window (child) et que la fonction FindwindowEx n'est pas supporté par windows NT et XP sur lequel je travail
alors comment on fait pour obtenir ce handle ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Liste des processus actif... [ par Sat83 ] Hello,Alors voilà je voudrais récupéré la liste de tout les processus actif et les stocké dans une liste...J'ai rechérch Kill processus explorer NT [ par jmjmjm ] Bonjour Je cherche à tu un processus System (explorer.exe)Je sais qu'il faut utiliser les Thread (enfin je crois )Si quelqu'un pouvait m'exp terminer un processus de liste des taches [ par sidalilo ] salut a tous c urgent..je veux terminer un processus(ex:mon projet.exe) de liste des tachesje veux une bonne reponse s.v.pmerci beaucoup de votre atte [API] définition de la priorité d'un processus [ par dejonckheere ] Bonjour, Pour définir la priorité d'une application, j'utilise actuellement le gestionnaire de tâches de Windows. Je me positionne sur TerminateProcess et processus system [ par brice1000 ] Quelqu'un pourrait-il me dire pourquoi la commande terminateProcess ne fonctionne qu'avec les processus dont le propriétaire n'est pas SYSTEM?Et opendilog et fichier typé [ par killerdam ] bonjour encore un probleme... je ne sais pas trop comment marche l opendialog et je voudrai sauvegarder une liste de point dans un fichier typé a combobox dans stringgrid [ par fbalien ] je veux afficher dans une cellule un combobox pour cella je fait   cbxType.Parent := StringGrid1 ; par la suite pour afficher la cbo a la ligne Liste du mois + année [ par elicec77 ] Je suis étudiante en bts et je souhaite faire une liste au format date qui comprend uniquement le mois et l'année, sans utiliser le DateTime récupérer le handle d'un exe dans les processus [ par lolosoft ] J'aimerai récupérer le handle d'un exécutable présent dans les processusMerci d'avance.lolosoft Bloquer IP [ par redtux ] Bonjour, Voila, dans le cadre de mon projet je dois concevoir une appli sous delphi 6 permettant de bloquer (au niveau du proxy, avec tous les privil


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales