Trouver les processus associés à une session utilisateur

3 réponses
Avatar
ThierryP
Bonjour le forum,

Gr=C3=A2ce =C3=A0 l'aide des pros du forum (merci Denis !!), j'ai pu =C3=A9=
crire un bout de fonction qui d=C3=A9tecte qu' un processus est lanc=C3=A9 =
:

Verifie_Connexion =3D False
objProcess =3D "CONHOST.EXE"
For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")
If UCase(Process.Name) =3D UCase(objProcess) Then
Verifie_Connexion =3D True
Exit Function
End If
Next

Mon souci est que je viens de m'apercevoir que ce process peut =C3=AAtre la=
nc=C3=A9 par le syst=C3=A8me ou un compte administrateur et donc pas access=
ible par l'utilisateur.

Y a-t-il un moyen de savoir si l'utilisateur a bien lanc=C3=A9 un processus=
donn=C3=A9 ?

Merci d'avance =C3=A0 tous les cadors du coin !!

ThierryP

3 réponses

Avatar
HB
Bonjour,
If faut utiliser la méthode GetOwner.
On récupère le "Domaine" et le "nom"
dans deux variables nommées transmise en arguments.
L'exemple ci-dessous est en VBS.
Les variables CHWMI et REQ sont là
pour éviter les lignes trop longues ;o)
On peut interroger une machine distante
en remplaçant dans CHWMI le point "."
par le nom de la machine...
Ce script donnera autant de réponses que d'instances...
Cordialement,
HB
' ================================================================= ' ================================================================= ESTLA = False
NomProcess = "NOTEPAD.EXE"
QUI="Personne"
' Chemin dans WMI
CHWMI="winmgmts:{impersonationLevel=impersonate}!.rootcimv2"
' Requète dans WMI
REQ ="select * from win32_process"
Set objWMIService = GetObject(CHWMI)
Set colProcesses = objWMIService.ExecQuery(REQ)
For Each Process in colProcesses
If UCase(Process.Name) = UCase(NomProcess) Then
ESTLA = True
If Process.GetOwner ( User, Domain ) = 0 Then
QUI = Domain & "" & User
Else
Qui = "un inconnu !"
End If
AFFICHE
End if
Next
Wscript.quit
' ================================================================= Sub AFFICHE()
If ESTLA Then
msgbox "Processus " & NomProcess & " lancé par " & QUI
ELSE
msgbox "Processus " & NomProcess & " Absent."
End IF
End Sub
' ================================================================= ' ==================================================================
Avatar
ThierryP
Bonsoir HB,
Merci pour cette précieuse macro, que je vais tester dès demain ! !
ThierryP
Le mercredi 10 mai 2017 18:06:09 UTC+2, HB a écrit :
OUPS
à force de modifier le script j'ai fait une bêtise
Le cas "processus absent" n'était pas convenablement traité.
voici le VBS corrigé
Avatar
ThierryP
Bonjour HB,
Désolé de n'avoir pas fait de retour avant... Trop de boulot !
Ton script fonctionne nickel, et me convient parfaitement.
Merci pour le coup de main,
ThierryP
Le mercredi 10 mai 2017 18:06:09 UTC+2, HB a écrit :