[.NET 2] Process et application

fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008 - 8 avril 2007 à 22:39
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008 - 9 avril 2007 à 18:58
Bonjour à tous !

Je voudrais faire un logiciel de gestion des programmes et donc je voudrais lister tous les applications installés sur une PC et ensuite pouvoir killer le processus asociés à l'application.

Le problème c'est que je ne sais pas comment récupérer le processus en fonction du chemin ou du nom de l'application (car parfois le processus et le nom de l'appli sont différents ) !!!

Merci pour votre future aide ^^

12 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
8 avril 2007 à 22:45
Salut,

Il y a une multitude de sources à ce sujet sur le site...Fais une recherche avec les mots : Processus, kill , lister processus...

A+
Exploreur

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
8 avril 2007 à 22:47
Salut,

Déjà cette page...

A+
Exploreur

 
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
8 avril 2007 à 22:50
Salut,

Je sais très bien lister des processus !

le problème n'est pas la c'est comment à partir du chemin du programme ou du nom de l'application, je peux killer le processus associé ?
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
8 avril 2007 à 22:52
par exemple,

Je veux killer le processus "mnsmsg.exe" et le nom du programme est "Messenger.exe" et le chemin d'accès "C:\Test\Messenger"

Comment killer mnsmsg.exe ? avec les informations que je dispose !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 avril 2007 à 00:23
Salut,

je ne sais pas si WMI fonctionne avec DotNet, mais avec VB6, et Win32_Process, voici ce que tu peux tirer comme info :

Caption : vb6.exe
CommandLine : "C:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE"
CreationClassName : Win32_Process
CreationDate : 20070409001618.593750+120
CSCreationClassName : Win32_ComputerSystem
CSName :
Description : vb6.exe
ExecutablePath : C:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE
ExecutionState :
Handle : 3424
HandleCount : 233
InstallDate :
KernelModeTime : 15000000
MaximumWorkingSetSize : 1413120
MinimumWorkingSetSize : 204800
Name : vb6.exe
OSCreationClassName : Win32_OperatingSystem
OSName : Microsoft Windows XP Home Edition|C:\WINDOWS|\Device\Harddisk0\Partition1
OtherOperationCount : 2164
OtherTransferCount : 144266
PageFaults : 4827
PageFileUsage : 7475200
ParentProcessId : 1512
PeakPageFileUsage : 7475200
PeakVirtualSize : 93921280
PeakWorkingSetSize : 17518592
Priority : 8
PrivatePageCount : 7475200
ProcessId : 3424
QuotaNonPagedPoolUsage : 9800
QuotaPagedPoolUsage : 78352
QuotaPeakNonPagedPoolUsage : 9800
QuotaPeakPagedPoolUsage : 78356
ReadOperationCount : 434
ReadTransferCount : 1121477
SessionId : 0
Status :
TerminationDate :
ThreadCount : 7
UserModeTime : 5781250
VirtualSize : 93921280
WindowsVersion : 5.1.2600
WorkingSetSize : 17518592
WriteOperationCount : 40
WriteTransferCount : 851

~ <small>39466 Mortalino ~ Colorisation automatique</small>

Il suffit donc de faire la relation entre ExecutablePath et ta variable de vérification, et de terminer le Processus en récupérant son caption.

Voici comment lister les infos :

'   [WMI Win32 Helper - Win32_Process]
    On Local Error Resume Next
    Dim sComputerName As String, WMI_Obj As Object, WMI_ObjProps As Object, ObjClsItem As Object
    sComputerName = Environ$("COMPUTERNAME")
    Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
    Set WMI_ObjProps = WMI_Obj.ExecQuery("SELECT * FROM Win32_Process", , 48)

    For Each ObjClsItem In WMI_ObjProps
        Debug.Print "Caption : " & ObjClsItem.Caption
        Debug.Print "CommandLine : " & ObjClsItem.CommandLine
        Debug.Print "CreationClassName : " & ObjClsItem.CreationClassName
        Debug.Print "CreationDate : " & ObjClsItem.CreationDate
        Debug.Print "CSCreationClassName : " & ObjClsItem.CSCreationClassName
        Debug.Print "CSName : " & ObjClsItem.CSName
        Debug.Print "Description : " & ObjClsItem.Description
        Debug.Print "ExecutablePath : " & ObjClsItem.ExecutablePath
        Debug.Print "ExecutionState : " & ObjClsItem.ExecutionState
        Debug.Print "Handle : " & ObjClsItem.Handle
        Debug.Print "HandleCount : " & ObjClsItem.HandleCount
        Debug.Print "InstallDate : " & ObjClsItem.InstallDate
        Debug.Print "KernelModeTime : " & ObjClsItem.KernelModeTime
        Debug.Print "MaximumWorkingSetSize : " & ObjClsItem.MaximumWorkingSetSize
        Debug.Print "MinimumWorkingSetSize : " & ObjClsItem.MinimumWorkingSetSize
        Debug.Print "Name : " & ObjClsItem.Name
        Debug.Print "OSCreationClassName : " & ObjClsItem.OSCreationClassName
        Debug.Print "OSName : " & ObjClsItem.OSName
        Debug.Print "OtherOperationCount : " & ObjClsItem.OtherOperationCount
        Debug.Print "OtherTransferCount : " & ObjClsItem.OtherTransferCount
        Debug.Print "PageFaults : " & ObjClsItem.PageFaults
        Debug.Print "PageFileUsage : " & ObjClsItem.PageFileUsage
        Debug.Print "ParentProcessId : " & ObjClsItem.ParentProcessId
        Debug.Print "PeakPageFileUsage : " & ObjClsItem.PeakPageFileUsage
        Debug.Print "PeakVirtualSize : " & ObjClsItem.PeakVirtualSize
        Debug.Print "PeakWorkingSetSize : " & ObjClsItem.PeakWorkingSetSize
        Debug.Print "Priority : " & ObjClsItem.Priority
        Debug.Print "PrivatePageCount : " & ObjClsItem.PrivatePageCount
        Debug.Print "ProcessId : " & ObjClsItem.ProcessId
        Debug.Print "QuotaNonPagedPoolUsage : " & ObjClsItem.QuotaNonPagedPoolUsage
        Debug.Print "QuotaPagedPoolUsage : " & ObjClsItem.QuotaPagedPoolUsage
        Debug.Print "QuotaPeakNonPagedPoolUsage : " & ObjClsItem.QuotaPeakNonPagedPoolUsage
        Debug.Print "QuotaPeakPagedPoolUsage : " & ObjClsItem.QuotaPeakPagedPoolUsage
        Debug.Print "ReadOperationCount : " & ObjClsItem.ReadOperationCount
        Debug.Print "ReadTransferCount : " & ObjClsItem.ReadTransferCount
        Debug.Print "SessionId : " & ObjClsItem.SessionId
        Debug.Print "Status : " & ObjClsItem.Status
        Debug.Print "TerminationDate : " & ObjClsItem.TerminationDate
        Debug.Print "ThreadCount : " & ObjClsItem.ThreadCount
        Debug.Print "UserModeTime : " & ObjClsItem.UserModeTime
        Debug.Print "VirtualSize : " & ObjClsItem.VirtualSize
        Debug.Print "WindowsVersion : " & ObjClsItem.WindowsVersion
        Debug.Print "WorkingSetSize : " & ObjClsItem.WorkingSetSize
        Debug.Print "WriteOperationCount : " & ObjClsItem.WriteOperationCount
        Debug.Print "WriteTransferCount : " & ObjClsItem.WriteTransferCount
        Debug.Print vbCrLf
    Next ObjClsItem

    Set ObjClsItem = Nothing
    Set WMI_ObjProps = Nothing
    Set WMI_Obj = Nothing

~ <small> Mortalino ~ Colorisation automatique </small>

@++





<hr width ="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
9 avril 2007 à 11:33
Salut,

Malheureusement en DotNet c'est pas comme ca et je peux pas utiliser cela...

Pourtant j'en suis sur qu'il y a une classe du DotNet pour faire ce que je veux faire !

++
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
9 avril 2007 à 11:47
Re,

J'ai fais des recherches et WMI existe en DotNet mais je n'arrive pas du tout à obtenir les meme infos que toi ! Snif ...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 avril 2007 à 11:54
En DotNet, il faut que tu te rencardes sur ROOT.CIMV2.Win32_Process

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 avril 2007 à 11:55
Regarde cette source :

http://www.vbfrance.com/codes/UTILISATEURS-LOGUES-SUR-MACHINE_41365.aspx

T'auras le code.

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
9 avril 2007 à 12:23
Re,

C'est ce que j'ai fais mais je n'ai pas les meme propriétés que toi...

De plus, si je met un point d'arret et bah le programme plante completement donc je peux meme pas regarder les propriétés des objets !!

Ce programme ne fait que lister des process (choses que je sais deja faire) mais il ne récupère pas du tout les infos que je cherche.

En fait, concretement voila ce que je veux faire car je crois que je m'exprime mal :

J'ai une fonction qui liste tous les programmes installés sur un PC (pas de pb)
J'ai une autre fonction qui liste tous les process (pas de pb)

Maintenant je veux quand on clique sur un programme installé sur le PC,  qu'on le Kill ! C'est aussi simple

Pb : Le nom du process n'est pas toujours le meme que celui de l'exécutable de l'application ! Donc comment récupérer le process associé au programme ou alors comment récupérer à partir du process, le nom du programme associé (car msnmsg.exe ===> c'est pas tout le monde qui sait que c'est MSN Messenger le programme associé !! :) )

++
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 avril 2007 à 18:32
"C'est ce que j'ai fais mais je n'ai pas les meme propriétés que toi..."

>> et alors c'est pas bon ?
Avec les 2 propriétés que je t'ai donné, ça devrait le faire, sachant que pour mon exemple c'est marqué vb6, mais si tu utilise MSN, c'est bien le nom du Process qui doit apparaitre (et donc msnmsg.exe).


Pour le nom de l'appli, beh C:\Chemin\nom Appli.exe.


Il suffit de récupérer ce qui est à droite du \

@++





<hr width="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
9 avril 2007 à 18:58
Slt,

Non c'est pas bon car si je liste les process avec ta méthode je vais récupérer msnmsg.exe sans problème et la path va etre C:\Chemin\msnmsg.exe et en aucun cas j'aurais récupérer "MSN Messenger" c'est à dire le nom réel de l'application !
0
Rejoignez-nous