art_dupond je suis neuneu... oui oui !! | youp,
j'ai besoin de récupérer le nom de l'utilisateur loggé (%USERNAME%) dans un programme qui est un service windows...
pour ca j'ai fait
Public Function GetUserName() As String
Dim NameSpace As String
On Error GoTo noUser
NameSpace = "root\cimv2" 'c'est le namespace par défaut
Set p_objSWbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\" & NameSpace)
Set p_objSWbemObjectSet = p_objSWbemServices.ExecQuery("Select userName from Win32_ComputerSystem", , 48)
For Each p_objSWbemObject In p_objSWbemObjectSet
GetUserName = p_objSWbemObject.userName
Exit Function
Next
Exit Function
noUser:
GetUserName = ""
End Function
|
le problème, c'est que la fonction dure 1 minute 30 pour donc je voudrais faire autrement, mais ca ne marche pas
j'ai essayé
msgbox Environ("USERNAME" ) |
Private Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Function GetEnvVar(ByVal VarName As String) As String
Dim sVar As String, lVar As Long
lVar = 50 '(ceci représente le nombre max de charactères à récupérer...)
sVar = String(lVar, 0)
lVar = GetEnvironmentVariable(VarName, sVar, lVar)
GetEnvVar = Left(sVar, lVar)
End Function
Private Sub Form_Load()
msgbox GetEnvVar("USERNAME" )
End Sub |
qui ne marchent pas. Ca marche si je les lance moi-même. Mais à partir de mon "service" windows, il me renvoie "". Je suppose que c'est le username qui à lancé le service et donc que c'est normal.
mais bon, ca ne m'arrange pas
un chtite aide quelqu'un ?
merci |