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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 34 186 fois - Téléchargée 31 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
8 mars 2010 à 18:00
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
4 sept. 2008 à 12:16
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 19 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 15 février 2008
1 oct. 2006 à 10:39
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 22 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 19 février 2008
7 avril 2004 à 17:38
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
7 avril 2004 à 14:14
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 ???
Afficher les 9 commentaires

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.