Trouver le PATH d'un utilisateur à partir d'un service

Signaler
Messages postés
2
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
14 septembre 2009
-
Messages postés
2
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
14 septembre 2009
-
Bonjour à tous,

Gros problème pour moi :
Comment récupérer le chemin d'accès au profil d'un utilisateur spécifié ? Je m'explique : j'ai un service Windows ( loggé sous SYSTEM) qui doit aller écrire des données dans le profil de l'utilisateur courant. (je récupère son nom en identifiant le propriétaire du process "explorer.exe")

Merci pour vos aides et idées ...

2 réponses

Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
Le problème est qu'un service peut tourner sans qu'il y ait de sessions ouvertes, et inversement il peut y avoir n personnes connectés à un poste !
Messages postés
2
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
14 septembre 2009

Ce que je voudrais c'est trouver un système pour pouvoir faire une fonction du type "GetUserProfilePath" qui renverrai le Path de l'utilisateur passé en paramètre :

dim strUsers as String()
'Retourne la liste des utilisateurs connectés
strUsers = GetUsers("explorer.exe")

for each strUser as string in strUsers
GetUserProfilePath(strUser)
next


'Fonction qui retourne les utilisateurs propriétaires d'un processus
Public Function GetUsers(ByVal Processus As String) As String()
Dim Return_(-1) As String
' Prépare WMI.
Dim ManagementClass_ As New Management.ManagementClass("Win32_Process")
Dim ManagementObjectCollection_ As Management.ManagementObjectCollection = ManagementClass_.GetInstances
Dim ManagementObject_ As Management.ManagementObject
Dim Domain_ As String = String.Empty
Dim User_ As String = String.Empty
' Liste tous les processus et demande le propriétaire de chacun de ceci.
For Each ManagementObject_ In ManagementObjectCollection_
Dim Process_ As New ROOT.CIMV2.Process(ManagementObject_)
Process_.GetOwner(Domain_, User_)
' Si le processus est celui qui est recherché : complète la liste des utilisateurs.
If (Process_.Name.Trim = Processus) Then
ReDim Preserve Return_(Return_.Length)
Return_(Return_.Length - 1) = String.Concat(Domain_, "", User_)
End If
Next

' Retourne le resultat.
Return Return_
End Function