Trouver les processus associés à une session utilisateur
3 réponses
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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ' ================================================================= ' ==================================================================
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...
' 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
' ================================================================= ' ==================================================================
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
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é
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é.
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
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 :
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 :
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 :