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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
HB
Le #26433392
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
' ================================================================= ' ==================================================================
ThierryP
Le #26433434
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é
ThierryP
Le #26434272
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 :
Publicité
Poster une réponse
Anonyme