Accueil > > > 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
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
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
Sources de la même categorie
Commentaires et avis
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
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|