2009-07-24 14 views
3

Je travaille avec un ancien site intranet écrit en ASP classique. J'essaie de récupérer leur nom d'utilisateur avec lequel ils se sont connectés. Chaque utilisateur est connecté à AD, mais je ne peux pas le récupérer sur le serveur car le site intranet n'utilise pas AD.Utiliser ActiveX pour obtenir le nom d'utilisateur

On m'a dit que je pouvais utiliser ActiveX afin de le récupérer. Je l'ai fait quelques recherches et j'ai trouvé le code suivant (javascript):

var wshshell = new ActiveXObject("WScript.shell"); 
var username = wshshell.ExpandEnvironmentalStrings("%username%"); 

Actuellement, je suis en utilisant IE8 et je reçois une erreur « serveur Automation ne peut pas créer un objet » sur cette première ligne.

1) Des idées pour lesquelles je reçois l'erreur?

2) Y a-t-il une meilleure façon de le faire compte tenu de mes limites?

Répondre

6

Si cela est fait côté client, vous devez demander à l'utilisateur d'ajouter le site à la zone Sites de confiance et de définir le niveau de sécurité au plus bas. La ligne 1 devrait fonctionner côté serveur, mais je ne pense pas que la ligne 2 soit correcte.

Essayez cette

var net = new ActiveXObject ("WScript.NetWork"); 
var username = net.UserName; 
1

Fondamentalement, il est impossible de récupérer les informations de la machine Windows client en utilisant Javascript. Parce que sa portée est jusqu'à navigateur seulement. Pour ce faire, vous devez créer un objet COM ou un objet ActiveX et, à l'aide de la page ASPX, vous devez le déployer sur le système du client dès la première fois que vous accédez à votre page à partir d'un navigateur.

Maintenant, l'objet ActiveX a une fonctionnalité permettant d'interagir avec javascript. Vous devez accéder à l'objet COM ou à la classe et la fonction du COM, qui interagissent en outre avec les classes système pour obtenir les informations système. i.e connecté dans les informations utilisateur Windows du client.

var net = new ActiveXObject ("WScript.NetWork"); 
var username = net.UserName; 

code ci-dessus est également un objet en cours d'initialisation COM, si elle n'est pas déployé sur votre système client ce script ne fonctionnera pas.

Questions connexes