Comment récupérer un username sans passer par wscript.network...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 33 846 fois - Téléchargée 29 fois

Contenu du snippet

Salut.
Ce code a pour but d'éviter de galérer pendant des heures à se dire : pourquoi qd je fais CreateObject("WScript.network") dans mon vbscript, il me renvoie erreur d'activeX... Il s'agit d'une question de sécurité dans IE, et dans la configuration du webservice, et de IIS (et ou ou en fait... )

La technique d'aller chercher ça dans les bases de registres, mm combat, un peu léger... des fois on y a accès, des fois pas...

Mais il existe une classe dans les classes toutes faites de System qui le fait...

PS : je n'ai rien inventé hein, c juste une solution qui existe, ça évite d'avoir à se creuser et s'envoyer toute la classe System qui est un peu énorme...

Pour plus d'infos, aller sur cette URL
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpguide/html/cpconaspnetimpersonation.asp

Le code est en dessous.

Source / Exemple :


Dim strUsername as String = System.Security.Principal.WindowsIdentity.GetCurrent().Name

Response.write(strUserName)

'Donc là, vous avez un truc du genre nom_Machine\ASPNET
'C'est normal. Pour que ça marche, il faut ajotuer la ligne suivante au web.config
'(tout en haut, dans system.web)

' Dans le webComfig
<identity impersonate="true"/>

'Et là, vous avez bien votre username !
'En creusant, je suis sur qu'il est possible d'avoir le network, et tout le reste, mais 'le principe est là. Après chacun l'utilise comme il veut ! 

'S'il reste un truc du genre NOMDOMAINE\USER, on peut faire ensuite la 
'chose suivante
'-- Retire le "\"
username = (Mid(username, (InStr(username, "\")) + 1))

A voir également

Ajouter un commentaire

Commentaires

sergeburki
Messages postés
3
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
8 mars 2010
-
Une des possibilités pour avoir le code utilisateur du client: passer par javascript :

du genre :

function windowsID ()
{
try {
var WinNetwork = new ActiveXObject("WScript.Network");
return WinNetwork.UserName;
}
catch (e) {
// on met un code utilisateur vide ou bidon ... selon les goûts
return 'unknown'
}
}

Si le composant activex n'est pas installé ou si il n'est pas autorisé (cf paramètres IE, section sécurité, personnaliser le niveau), on récupère un code non vide avec la valeur "unknown"...

Avec ce code, facile d'initialiser un écran de login.
briquetb
Messages postés
25
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
30 septembre 2008
-
Bonjour tout le monde,

Je sais que le sujet remonte a très très loin mais il me faut absolument cette réponse.
Avec le code ci-dessus je récupère le login du serveur et non le login du client.
J'ai cherché sur tout le net et impossible de trouver.
Je dois recuperer le login sur un site intranet.
SVP repondez le plus vite possible.
djnos
Messages postés
20
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
15 février 2008
-
Moi perso, s'il fallait récupérer un login utilisateur, chose que j'ai déjà faite, j'oublierais tout de suite l'idée des active-x etc... qui sont vraiment bien bloqués par les navigateurs aujourd'hui (il faut faire explicitement autoriser etc...), autant créer une petite applet et la signer avec un certificat que vous aurez généré au préalable. Dans cette applet le principe est simple :
vous récupérez pour windows la variable d'envirronement %USERNAME% et sous Linux vous pouvez par exemple spliter la variable $HOME mais ca c'est pas pour tenter de faire des trucs pas correct sur la machine du client... moi c'était pour une utilisation 'correcte' sur un réseau d'entreprise....
Kytel
Messages postés
24
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
19 février 2008
-
Pour ce qui font de l'intranet
En ce qui me concerne j'utilise le WScript.Network sans aucun problème. Pour que tout le monde puisse l'utiliser j'ai paramétré la classe d'adresse de mon réseau pour qu'elle ne passe pas par mon proxy (le paramètrage se fait donc au niveau de l'intranet). Ensuite j'ai permis les scripts Active X dans les paramètres de Sécurité de mon INTRANET et pas l'internet sinon bonjour la sécu. Je peux ainsi récupérer le UserName et le UserDomain. Par défaut les active X ne sont pas permis alors pour ceux qui en plus ont Active Directory ils peuvent créer une policy pour que ces paramètrages se fassent sur tous les pcs du réseau. Il me reste encore à récupérer les adresses mail en comparant le login que je récupère à la base Active Directory mais c'est une autre histoire ... D'ailleurs si y'en a qu'on déjà fait je suis preneuse parce que je manque un peu de temps ... Merci ;)
PeTeRsLaStAr
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
1 -
Marche pas chez moi ton code...
il faut ajouter des éléments ailleurs ?

la commande existe, mais elle renvoie rien, je suis identifié en tant qu'anonyme...

De quel user s'agit il ???

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.