Je dois savoir combien de fois un exe est lancé sur un serveur.
Mais ce serveur est un serveur Citrix.
Donc je dois différencier les processus de chaque utilisateur.
Dans le gestionnaire des taches il y a l'option "Afficher la liste des
processus de tous les utilisateurs". Si elle est cochée on a tous les
processus qui tournent sur la machine. Si on la décoche on a juste les
processus de la session en cours.
Je voudrais donc filtrer mes processus par utilisateur.
J'utilise des API et en particulier CreateToolhelpSnapshot.
Mais je ne trouve rien me permettant de trouver l'utilisateur d'un
processus.
Merci d'avance à celui ou celle qui a une solution.
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
Jacques93
Bonjour YaYOu, YaYOu a écrit :
Bonjour
Je dois savoir combien de fois un exe est lancé sur un serveur. Mais ce serveur est un serveur Citrix. Donc je dois différencier les processus de chaque utilisateur.
Dans le gestionnaire des taches il y a l'option "Afficher la liste des processus de tous les utilisateurs". Si elle est cochée on a tous les processus qui tournent sur la machine. Si on la décoche on a juste les processus de la session en cours.
Je voudrais donc filtrer mes processus par utilisateur. J'utilise des API et en particulier CreateToolhelpSnapshot. Mais je ne trouve rien me permettant de trouver l'utilisateur d'un processus.
Merci d'avance à celui ou celle qui a une solution.
Tu peux essayer ceci, à tester (je n'ai pas de serveur sous la main) (Nécessite une référence à Microsoft WMI Scripting V1.2 Library : wbemdisp.tlb).
Private Sub Command1_Click() EnumProcessus End Sub
Private Sub EnumProcessus(Optional strComputer As String = ".") Dim Locator As SWbemLocator Dim Service As SWbemServices Dim colProcesses As SWbemObjectSet Dim objProcess As SWbemObject Dim User As String, Domain As String
Set Locator = New WbemScripting.SWbemLocator Set Service = Locator.ConnectServer(strComputer, "rootcimv2")
Set colProcesses = Service.ExecQuery( _ "select * from win32_process") Debug.Print colProcesses.Count; " Processus" On Error Resume Next For Each objProcess In colProcesses If objProcess.GetOwner(User, Domain) = 0 Then Debug.Print Pad(objProcess.Caption, 20) & _ " " & Domain & "" & User & _ " (" & objProcess.SessionID & ")" Else Debug.Print "Problème " & _ " pour trouver le propriétaire du processsus " _ & objProcess.Caption End If Next End Sub
Private Function Pad(s As String, l As Long) As String If Len(s) < l Then Pad = s & Space(l - Len(s)) Else Pad = Left(s, l) End If End Function
-- Cordialement,
Jacques.
Bonjour YaYOu,
YaYOu a écrit :
Bonjour
Je dois savoir combien de fois un exe est lancé sur un serveur.
Mais ce serveur est un serveur Citrix.
Donc je dois différencier les processus de chaque utilisateur.
Dans le gestionnaire des taches il y a l'option "Afficher la liste des
processus de tous les utilisateurs". Si elle est cochée on a tous les
processus qui tournent sur la machine. Si on la décoche on a juste les
processus de la session en cours.
Je voudrais donc filtrer mes processus par utilisateur.
J'utilise des API et en particulier CreateToolhelpSnapshot.
Mais je ne trouve rien me permettant de trouver l'utilisateur d'un
processus.
Merci d'avance à celui ou celle qui a une solution.
Tu peux essayer ceci, à tester (je n'ai pas de serveur sous la main)
(Nécessite une référence à Microsoft WMI Scripting V1.2 Library :
wbemdisp.tlb).
Private Sub Command1_Click()
EnumProcessus
End Sub
Private Sub EnumProcessus(Optional strComputer As String = ".")
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim colProcesses As SWbemObjectSet
Dim objProcess As SWbemObject
Dim User As String, Domain As String
Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer(strComputer, "rootcimv2")
Set colProcesses = Service.ExecQuery( _
"select * from win32_process")
Debug.Print colProcesses.Count; " Processus"
On Error Resume Next
For Each objProcess In colProcesses
If objProcess.GetOwner(User, Domain) = 0 Then
Debug.Print Pad(objProcess.Caption, 20) & _
" " & Domain & "" & User & _
" (" & objProcess.SessionID & ")"
Else
Debug.Print "Problème " & _
" pour trouver le propriétaire du processsus " _
& objProcess.Caption
End If
Next
End Sub
Private Function Pad(s As String, l As Long) As String
If Len(s) < l Then
Pad = s & Space(l - Len(s))
Else
Pad = Left(s, l)
End If
End Function
Je dois savoir combien de fois un exe est lancé sur un serveur. Mais ce serveur est un serveur Citrix. Donc je dois différencier les processus de chaque utilisateur.
Dans le gestionnaire des taches il y a l'option "Afficher la liste des processus de tous les utilisateurs". Si elle est cochée on a tous les processus qui tournent sur la machine. Si on la décoche on a juste les processus de la session en cours.
Je voudrais donc filtrer mes processus par utilisateur. J'utilise des API et en particulier CreateToolhelpSnapshot. Mais je ne trouve rien me permettant de trouver l'utilisateur d'un processus.
Merci d'avance à celui ou celle qui a une solution.
Tu peux essayer ceci, à tester (je n'ai pas de serveur sous la main) (Nécessite une référence à Microsoft WMI Scripting V1.2 Library : wbemdisp.tlb).
Private Sub Command1_Click() EnumProcessus End Sub
Private Sub EnumProcessus(Optional strComputer As String = ".") Dim Locator As SWbemLocator Dim Service As SWbemServices Dim colProcesses As SWbemObjectSet Dim objProcess As SWbemObject Dim User As String, Domain As String
Set Locator = New WbemScripting.SWbemLocator Set Service = Locator.ConnectServer(strComputer, "rootcimv2")
Set colProcesses = Service.ExecQuery( _ "select * from win32_process") Debug.Print colProcesses.Count; " Processus" On Error Resume Next For Each objProcess In colProcesses If objProcess.GetOwner(User, Domain) = 0 Then Debug.Print Pad(objProcess.Caption, 20) & _ " " & Domain & "" & User & _ " (" & objProcess.SessionID & ")" Else Debug.Print "Problème " & _ " pour trouver le propriétaire du processsus " _ & objProcess.Caption End If Next End Sub
Private Function Pad(s As String, l As Long) As String If Len(s) < l Then Pad = s & Space(l - Len(s)) Else Pad = Left(s, l) End If End Function
-- Cordialement,
Jacques.
Jacques93
Jacques93 a écrit :
Bonjour YaYOu, YaYOu a écrit :
Bonjour
Je dois savoir combien de fois un exe est lancé sur un serveur. Mais ce serveur est un serveur Citrix. Donc je dois différencier les processus de chaque utilisateur.
Dans le gestionnaire des taches il y a l'option "Afficher la liste des processus de tous les utilisateurs". Si elle est cochée on a tous les processus qui tournent sur la machine. Si on la décoche on a juste les processus de la session en cours.
Je voudrais donc filtrer mes processus par utilisateur. J'utilise des API et en particulier CreateToolhelpSnapshot. Mais je ne trouve rien me permettant de trouver l'utilisateur d'un processus.
Pour info, l'API utilisé pour TSE est WTSEnumerateProcesses
Pas certain que cela fonctionne avec un serveur Citrix
-- Cordialement,
Jacques.
Jacques93 a écrit :
Bonjour YaYOu,
YaYOu a écrit :
Bonjour
Je dois savoir combien de fois un exe est lancé sur un serveur.
Mais ce serveur est un serveur Citrix.
Donc je dois différencier les processus de chaque utilisateur.
Dans le gestionnaire des taches il y a l'option "Afficher la liste des
processus de tous les utilisateurs". Si elle est cochée on a tous les
processus qui tournent sur la machine. Si on la décoche on a juste les
processus de la session en cours.
Je voudrais donc filtrer mes processus par utilisateur.
J'utilise des API et en particulier CreateToolhelpSnapshot.
Mais je ne trouve rien me permettant de trouver l'utilisateur d'un
processus.
Pour info, l'API utilisé pour TSE est WTSEnumerateProcesses
Je dois savoir combien de fois un exe est lancé sur un serveur. Mais ce serveur est un serveur Citrix. Donc je dois différencier les processus de chaque utilisateur.
Dans le gestionnaire des taches il y a l'option "Afficher la liste des processus de tous les utilisateurs". Si elle est cochée on a tous les processus qui tournent sur la machine. Si on la décoche on a juste les processus de la session en cours.
Je voudrais donc filtrer mes processus par utilisateur. J'utilise des API et en particulier CreateToolhelpSnapshot. Mais je ne trouve rien me permettant de trouver l'utilisateur d'un processus.
Pour info, l'API utilisé pour TSE est WTSEnumerateProcesses