Trouver les processus associés à une session utilisateur
Le
ThierryP

Bonjour le forum,
Grâce à l'aide des pros du forum (merci Denis !!), j'ai pu é=
crire un bout de fonction qui détecte qu' un processus est lancé =
:
Verifie_Connexion = False
objProcess = "CONHOST.EXE"
For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")
If UCase(Process.Name) = UCase(objProcess) Then
Verifie_Connexion = True
Exit Function
End If
Next
Mon souci est que je viens de m'apercevoir que ce process peut être la=
ncé par le système 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é un processus=
donné ?
Merci d'avance à tous les cadors du coin !!
ThierryP
Grâce à l'aide des pros du forum (merci Denis !!), j'ai pu é=
crire un bout de fonction qui détecte qu' un processus est lancé =
:
Verifie_Connexion = False
objProcess = "CONHOST.EXE"
For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")
If UCase(Process.Name) = UCase(objProcess) Then
Verifie_Connexion = True
Exit Function
End If
Next
Mon souci est que je viens de m'apercevoir que ce process peut être la=
ncé par le système 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é un processus=
donné ?
Merci d'avance à tous les cadors du coin !!
ThierryP
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
' ================================================================= ' ==================================================================
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 :
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 :