service windows n'arrive pas à récupérer variable d'environnement :( - VB/VBA/VBS - Programmation
Marsh Posté le 26-04-2004 à 11:59:04
yop bon, la fonction ne dure longtemps qu'à la première exécution (quand le pc démarre), donc on va dire que c'est bong...
sorry
Marsh Posté le 27-04-2004 à 10:06:02
yop, j'ai trouvé ca sinon
http://vbnet.mvps.org/index.html?c [...] ername.htm
mais ca fait pas tout à fait ce que je veux...
Marsh Posté le 26-04-2004 à 11:41:06
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