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)
risposta
È possibile utilizzare l'interfaccia nsIEnvironment per ottenere la variabile environmnet USERNAME
.
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
<html>
<head>
<script language="javascript">
function GetUserName()
{
var wshell = new ActiveXObject("WScript.Shell");
alert(wshell.ExpandEnvironmentStrings("%USERNAME%"));
}
</script>
</head>
<body OnLoad="GetUserName();">
</body>
</html>
ActiveX non funziona esattamente in Firefox. – sdwilsh
Questo fa il trucco su Windows:
function getUser() {
return Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('USERNAME');
}
Questa soluzione mi dà questo errore'TypeError: Components.classes è indefinito', cosa ne pensi della soluzione per questo errore? – Scar
Questo non funziona in Firefox come la domanda originale sta chiedendo. – Monkpit
@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
Firefox ha già l'autenticazione integrata di built-in (molte persone non sanno che).
Vedi: https://developer.mozilla.org/en-US/docs/Integrated_Authentication
Qui è un addon per Firefox popolare che facilita la configurazione: https://addons.mozilla.org/nl/firefox/addon/integrated-auth-for-firefox/
Ecco qualche spiegazione in più:
http://justgeeks.blogspot.nl/2011/01/firefox-supports-integrated-windows.html
Buona fortuna!
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);
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
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
10 rep per la difficoltà di mostrarci ci sono opzioni extra – pythonian29033
Si tratta di un rischio per la sicurezza ed è per questo che non è esposto in javascript. Cosa stai cercando di fare? –
Sto costruendo un'estensione interna per un'azienda e ho bisogno di vedere quale utente richiede quale documento. – cwhiii
@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