2008-12-30 10 views

Respuesta

11

Las extensiones de Firefox se rigen por reglas diferentes al JavaScript normal que se ejecuta en la página: es absolutamente posible encontrar al usuario actual.

Abre tu Consola de errores (en Herramientas) y entrar en esto:

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

Las variables de entorno se inició con Firefox están disponibles a través de ese NsIEnvironment XPCOM component.

Es posible que deba personalizar esto por plataforma. Si todo lo demás falla, es posible que pueda crear un NsIFile en ~ y luego ver su .path; No estoy seguro de si las expresiones del shell se respetan allí, aunque ...

+1

¡Fantástico! En Windows, la variable de entorno es USERNAME en lugar de USER, por cierto: al tratar ambas cosas, cubre todas las plataformas que desee. – bhollis

+0

Sin problemas. De hecho, estoy de acuerdo con David y DFectuoso, parece un agujero de seguridad ... De hecho, las extensiones tienen los mismos derechos que Firefox, son realmente de confianza. Honestamente sorprendido, ¡hay tan poco malware FF! –

+0

Hablando de agujeros de seguridad, puede establecer NOMBRE DE USUARIO, por lo que podría no ser la mejor forma de identificar al usuario. ¿Quizás podrían usar eso para hacerse pasar por otra persona? – Rory

0

No creo que sea posible, parece que sería un agujero de seguridad si fuera así.

-1

Sí, no es posible ... Javascript se ejecuta en un entorno seguro, y todas las extensiones de FF son javascript, por lo que no podrás interactuar mucho con el sistema operativo ... pero me quedaré para ver si alguien conoce un manera (sería MUY genial ...)

1

La respuesta correcta marcada funciona bien. Lo uso en nuestra extensión en Firefox 38. También uso eventos para que la página se pueda comunicar con la extensión y recuperar las propiedades de Windows de la extensión.

getWindowsProperty: función (prop) { retorno Components.classes [ "@ mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get(prop); },

Cuestiones relacionadas