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

ButorButor Messages postés 2 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 14 septembre 2009 - 11 sept. 2009 à 17:03
ButorButor Messages postés 2 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 14 septembre 2009 - 14 sept. 2009 à 15:38
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

elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
14 sept. 2009 à 13:28
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 !
0
ButorButor Messages postés 2 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 14 septembre 2009
14 sept. 2009 à 15:38
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
0
Rejoignez-nous