2010-06-03 16 views
25

Sto lavorando a un componente aggiuntivo di Firefox (che è scritto in JavaScript) e devo determinare l'utente Windows attualmente connesso. C'è un modo per fare questo?Ottieni il nome utente di Windows in un componente aggiuntivo legacy (non WebExtensions)

+0

Si tratta di un rischio per la sicurezza ed è per questo che non è esposto in javascript. Cosa stai cercando di fare? –

+0

Sto costruendo un'estensione interna per un'azienda e ho bisogno di vedere quale utente richiede quale documento. – cwhiii

+0

@duskwuff, Perché imbastire una domanda di 7 anni solo per quella modifica? Tutto quello che hai fatto è stato sostituire un tag nel titolo con un altro tag nel titolo. I tag hanno già chiarito che si trattava di un componente aggiuntivo di Firefox. Non è stato necessario modificarlo per apportare questa modifica. In effetti, se vuoi essere pedante, non dovremmo avere tag non integrati nei titoli, quindi "Ottieni il nome utente di Windows" sarebbe stato più appropriato. Stai proponendo di mettere sempre tag in tutti i titoli? – Makyen

risposta

5

È possibile utilizzare l'interfaccia nsIEnvironment per ottenere la variabile environmnet USERNAME.

+2

c'è un equivalente IE per questo che non dà il problema che ActiveX fa (all'utente viene detto che c'è un rischio per la sicurezza, ecc.) Durante il processo di ottenere il nome utente? – 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 non funziona esattamente in Firefox. – sdwilsh

9

Questo fa il trucco su Windows:

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

Questa soluzione mi dà questo errore'TypeError: Components.classes è indefinito', cosa ne pensi della soluzione per questo errore? – Scar

+0

Questo non funziona in Firefox come la domanda originale sta chiedendo. – Monkpit

+0

@Scar: Per quanto ho capito [questo Stackoverflow-post] (http://stackoverflow.com/questions/21378058/why-components-classes-is-undefined), non è possibile utilizzare Components.classes in pagine web regolari. È pensato per l'uso nelle estensioni/addon di Firefox. – Stephanie

3

Seguendo codice funziona per me, invece di eventi onload con la funzione di chiamata:

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

Il richiedente utilizza * firefox *. Questa risposta usa M $ ActiveX! Non funzionerà (e non posso credere di averlo provato, ma l'ho fatto). In realtà c'era un plugin ActiveX per firefox (alcuni secoli fa, attorno all'era di FF2), ma ActiveX ora è nella blocklist di Mozilla. ([Fonte] (http://kb.mozillazine.org/ActiveX)). – GitaarLAB

+0

Testato ma questo codice funziona solo in Internet Explorer e non funzionerà in Firefox. L'opzione migliore è creare una casella di controllo/testo nascosta che contenga il valore fornito dal codice sottostante (lato server), usa javascript per ottenere il valore che ti serve. Considerando la tendenza attuale, non tutti usano IE per fare il loro lavoro più. – mutanic

+0

10 rep per la difficoltà di mostrarci ci sono opzioni extra – pythonian29033

Problemi correlati