Nombre de usuario de windows con javascript

Sasi
15 de Febrero del 2005
Hola a todos,

Estoy trabajando en un proyecto de una aplicación web que funcionará en una red local. Sin entrar en mucho detalle,la aplicación tiene dos partes: una parte administradora encargada de mantener una base de datos, y otra para que todos puedan ver esos datos, y dependiendo del usuario que pueda descargarse unos ficheros asociados a esos datos ( Mi parte). Esta parte le he implementado mediante html, javascript y asp por algunas características especiales del visor.
El programa ya está terminado y funciona a las mil maravillas, pero el cliente quiere que cambie el modo de entrada del usuario.
Ahora un usuario tiene que meter su nombre de usuario y contraseña al inicio de la aplicación. Así el sistma sabe que datos puede bajarse y cuales no.
Pero esto no les gusta, no quieren que nadie introduzca su nombre de usuario; prefieren que el el sistema detecte cual es el nombre de usuario de windows con el que el usuario ha accedido al programa.
No se si tal cosa es posible, por lo menos creo que no debería, pero están insistiendo mucho y yo estoy empezando a desesperar.... wink.gif
¿Alguien puede ayudarme?

¡¡¡Muchas gracias!!

eth0
15 de Febrero del 2005
Con JavaScript puro y duro no puedes. Tendrás que utilizar un elemento externo desde el que JavaScript pueda leer el nombre de usuario.

Dado que es una aplicación corporativa y que se ejecutará presumiblemente en un entorno más o menos controlado, supondré que todos los puestos de trabajo usan Windows XP (u otro tipo de NT) e Internet Explorer para acceder a la aplicación. En ese caso, podrías obtener el nombre de usuario actual accediendo al valor de la variable de entorno %USERNAME%, mediante el siguiente código JavaScript:

var wsh = new ActiveXObject('WScript.Shell');
var usuario = wsh.ExpandEnvironmentStrings('%USERNAME%');

Eso funcionará (creo) con Windows 2000 en adelante.

eth0
15 de Febrero del 2005
Una forma alternativa (que puede que incluso funcione mejor): Usar WScript.Network en lugar de WScript.Shell, de esta forma:

var wsh = new ActiveXObject('WScript.Network');
var usuario = wsh.UserName;

Sasi
15 de Febrero del 2005
Gracias, esta funciona perfectamente. Simplemente he tenido que cambiar la configuración del IExplorer activando todas las opciones de ActiveX para las páginas de la red local.

MUCHAS GRACIAS!!