2010-06-03 13 views
25

Estoy trabajando en un complemento de Firefox (que está escrito en JavaScript) y necesito determinar el usuario de Windows que inició sesión actualmente. ¿Hay alguna forma de hacer esto?Obtenga el nombre de usuario de Windows en un complemento de Firefox heredado (no WebExtensions)

+0

Este es un riesgo de seguridad y es por eso que no se expone en Javascript. ¿Que estás tratando de hacer? –

+0

Estoy creando una extensión interna para una empresa y necesito ver qué usuario solicita qué documento. – cwhiii

+0

@duskwuff, ¿por qué enfrentar una pregunta de 7 años solo para esa edición? Todo lo que hizo fue reemplazar una etiqueta en el título con otra etiqueta en el título. Las etiquetas ya dejaban en claro que se trataba de un complemento de Firefox. No hubo necesidad de editar esto para hacer ese cambio. De hecho, si quieres ser pedante, no se supone que tengamos etiquetas no integrales en los títulos, por lo que "Obtener nombre de usuario de Windows" hubiera sido más apropiado. ¿Estás proponiendo que siempre pongamos etiquetas en todos los títulos? – Makyen

Respuesta

5

Puede usar la interfaz nsIEnvironment para obtener USERNAME variable environmnet.

+2

¿existe un equivalente de IE para esto que no da el problema que tiene ActiveX (al usuario se le dice que hay un riesgo de seguridad, etc.) cuando pasa por el proceso de obtener el nombre de usuario? – pythonian29033

-2
<html> 
<head> 
    <script language="javascript"> 
     function GetUserName() 
     { 
      var wshell = new ActiveXObject("WScript.Shell"); 
      alert(wshell.ExpandEnvironmentStrings("%USERNAME%")); 
     } 
    </script> 
</head> 
<body OnLoad="GetUserName();"> 
</body> 
</html> 
+8

ActiveX no funciona exactamente en Firefox. – sdwilsh

9

Esto hace el truco en Windows:

function getUser() { 
    return Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('USERNAME'); 
}  
+1

Esta solución me da este error'TypeError: Components.classes no está definido', ¿Cuál crees que es la solución para este error? – Scar

+0

Esto no funciona en Firefox ya que la pregunta original es preguntar. – Monkpit

+0

@Scar: Por lo que he entendido [este Stackoverflow-post] (http://stackoverflow.com/questions/21378058/why-components-classes-is-undefined), no puede usar Components.classes en páginas web regulares. Está destinado para su uso en extensiones/complementos de Firefox. – Stephanie

3

siguiente código funciona para mí en lugar de proceso de carga con la función que llama:

var objUserInfo = new ActiveXObject("WScript.network"); 
document.write(objUserInfo.ComputerName+"<br>"); 
document.write(objUserInfo.UserDomain+"<br>"); 
document.write(objUserInfo.UserName+"<br>"); 
var uname = objUserInfo.UserName; 
alert(uname); 
+7

El asker usa * firefox *. ¡Esta respuesta usa M $ ActiveX! No funcionará (y no puedo creer que realmente lo haya probado, pero lo hice). En realidad, había un complemento de ActiveX para Firefox (hace algunas eras, alrededor de la era de FF2), pero ActiveX ahora está en la lista de bloqueo de mozilla. ([fuente] (http://kb.mozillazine.org/ActiveX)). – GitaarLAB

+0

Probado pero este código solo funciona en Internet Explorer y no funcionará en Firefox. La mejor opción es crear un control/cuadro de texto oculto para mantener el valor dado desde el código (lado del servidor), use javascript para obtener el valor que necesita. Teniendo en cuenta la tendencia actual, no todos usan IE para hacer su trabajo nunca más. – mutanic

+0

10 representante por el problema de mostrarnos que hay opciones adicionales – pythonian29033

Cuestiones relacionadas