2008-12-30 17 views

risposta

11

Le estensioni di Firefox funzionano secondo regole diverse rispetto al normale JavaScript in esecuzione nella pagina: trovare l'utente corrente è assolutamente possibile.

Aprire il Console degli errori (in Strumenti) e entrare in questo:

Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('USER') 

Le variabili di ambiente Firefox è stato iniziato sono disponibili attraverso quella NsIEnvironment XPCOM component.

Potrebbe essere necessario personalizzare questo per piattaforma. Se tutto il resto fallisce, potresti essere in grado di creare un NsIFile in ~ quindi guardare il suo .path; Non sono sicuro che le espressioni di shell siano rispettate lì, anche se ...

+1

Fantastico! In Windows, la variabile d'ambiente è USERNAME invece di USER, a proposito: provando entrambi, si coprono tutte le piattaforme che si desidera. – bhollis

+0

Nessun problema. In realtà sono d'accordo con David e DFectuoso - sembra un buco di sicurezza ... In effetti, le estensioni hanno gli stessi diritti di Firefox - sono davvero affidabili. Onestamente sorpreso c'è così poco malware FF! –

+0

A proposito di buchi di sicurezza, puoi impostare USERNAME in modo che non sia il modo migliore di identificare l'utente: potrebbero forse usarlo per impersonare qualcun altro? – Rory

0

Non pensare che sia possibile, sembra che sarebbe un buco di sicurezza, se fosse.

-1

Sì, non è possibile ... Javascript viene eseguito in un ambiente sicuro, e tutte le estensioni FF sono javascript quindi non sarà possibile interagire molto con il sistema operativo ... ma si bloccherà per vedere se qualcuno conosce un modo (sarebbe MOLTO bello ...)

1

La risposta corretta contrassegnata funziona correttamente. Lo uso nella nostra estensione su Firefox 38. Uso anche gli eventi in modo che la pagina possa comunicare con l'estensione e recuperare le proprietà di Windows dall'estensione.

getWindowsProperty: la funzione (prop) { ritorno Components.classes [ "@ mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get(prop); },

Problemi correlati