Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2554 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] login utilisateur

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] login utilisateur

n°181379
bmanu
Posté le 24-07-2002 à 10:53:01  profilanswer
 

je souhaiterais determiner quel est l'utilisateur connecte sur un poste afin de charger quelques parametres personnalises.
 
Plutot que de demander son nom a l'utilisateur, je voudrais determiner cette info sans poser de question...
 
Comment faire?  
Merci

mood
Publicité
Posté le 24-07-2002 à 10:53:01  profilanswer
 

n°181418
JPA
Posté le 24-07-2002 à 11:13:23  profilanswer
 

Il existe la fonction environ qui retourne la valeur d'une variable d'environnement Windows.
malheureusement username n'est pas créée avec win 9x. Tu peux heureusement la créer dans le script de connexion. voir :
http://www.robvanderwoude.com/files/netsetfr.txt
attention : commencer le script par :
if exist %username% goto suite
rem ici création de username
...
 
:suite
 
C'est la première solution qui me vient à l'esprit, mais il y en a peut-être d'autres.
A+

n°181796
bmanu
Posté le 24-07-2002 à 16:13:22  profilanswer
 

merci JPA, ta reponse m'a deja fait progresser.
 
en fait, l'execution a la ligne de commande de  
 
NET CONFIG | FIND /I "Nom d'utilisateur"
 
repond le nom de l'utilisateur, mais je ne sais pas trop comment le recuperer (sans l'ecrire dans un fichier) mais en la stockant dans une variable.
 
en VBA, je peux executer  
 
shell ("NET CONFIG" )
 
mais pas  
 
shell ("NET CONFIG | FIND /I " & """" & "Nom d'utilisateur" & """" )
 
 
la difference (pas tres genante) est que la reponse fait 5 lignes au lieu de 1 (nom user, nom PC, version Win ... )


Message édité par bmanu le 24-07-2002 à 16:14:13
n°181847
JPA
Posté le 24-07-2002 à 16:37:02  profilanswer
 

tu fais un batch (username.bat par exemple) comme écrit sur le site que je t'ai donné.
Soit tu le rajoute dans le script de connexion réseau de tes users par call username.bat (celà va être chiant si tu as un script par utilisateur...)
Soit tu le lances dans ton programme VBA (mais je ne sais absolument pas si celà marche bien)
 
A+

n°182592
shyangel
Posté le 25-07-2002 à 12:35:27  profilanswer
 

Bonjour,
 
La fonction suivante avec la partie déclaration (obligatoire) te permet de récupérer le nom de l'utilisateur.
 
@+
 
Option Explicit
Option Base 1
 
' ======= Declaration des API pour récupérer le USER NAME ================
'    Declare Function NetWkstaGetInfo Lib "NETAPI.DLL" (ByVal pszServer As String, ByVal sLevel As Integer, pbBuffer As Any, ByVal cbBuffer As Integer, pcbTotalAvail As Integer) As Integer
    Declare Function WNetGetUser Lib "mpr" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
    Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
 
    Type WKSTA_INFO_101
         wki101_platform_id As Long
         wki101_computername As Long
         wki101_langroup As Long
         wki101_ver_major As Long
         wki101_ver_minor As Long
         wki101_lanroot As Long
    End Type
     
    Type WKSTA_USER_INFO_1
         wkui1_username As Long
         wkui1_logon_domain As Long
         wkui1_logon_server As Long
         wkui1_oth_domains As Long
    End Type
 
'*****************************************************
' Fonction GetUserName
' Récupère le nom de l'utilisateur connecté (réseau)
'*****************************************************
Function GetUserName() As String
Dim ret As Long, buffer(512) As Byte, i As Integer
Dim wk101 As WKSTA_INFO_101, pwk101 As Long
Dim wk1 As WKSTA_USER_INFO_1, pwk1 As Long
Dim cbusername As Long, UserName As String
Dim computername As String, langroup As String, logondomain As String
 
    ' Clear all of the display values.
    computername = "": langroup = "": UserName = "": logondomain = ""
     
    ' Windows 95 or NT - call WNetGetUser to get the name of the user.
    UserName = Space(256)
    cbusername = Len(UserName)
    ret = WNetGetUser("", UserName, cbusername)
    UserName = UCase(UserName)
    If ret = 0 Then
       ' Success - strip off the null.
       UserName = left(UserName, InStr(UserName, Chr(0)) - 1)
    Else
       UserName = ""
    End If
    GetUserName = UserName
     
End Function

n°183460
bmanu
Posté le 26-07-2002 à 11:24:14  profilanswer
 

Je vous remercie tous les 2!
 
Ta solution me convient tout a fait Shyangel!
 
j'avoue que je ne comprends pas tout, mais je vais l'etudier!  
 
est elle de ton cru, ou l'as tu trouvee toute faite?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] login utilisateur

 

Sujets relatifs
Concatenation sous VBA Excel...VBA ou C++
[VBA] Urgent - Comment modifier le menu contextuel de Word? [résolu]comment savoir la langue de l'utilisateur avec ASP ?
[VBA] Copier ou déplacer des fichiers ?[VBA] Comment créer un boite de dialogue fichier/parcourir ?
[login script] comment recup le user name ou id, la date et l heure ?[phpbb] creez un utilisateur en accedant directement aux tables
Probleme code VBA de exel 97 -> 2000renomer/deplacer des fichiers en VBA ...
Plus de sujets relatifs à : [VBA] login utilisateur


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR