2008-12-30 7 views

Antwort

11

Firefox-Erweiterungen spielen nach anderen Regeln als normales JavaScript auf der Seite: das Finden des aktuellen Benutzers ist absolut möglich.

Öffnen Sie Ihre Fehlerkonsole (in Tools) und diese eingeben:

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

Die Umgebungsvariablen Firefox mit gestartet wurde durch diese NsIEnvironment XPCOM component zur Verfügung stehen.

Sie müssen dieses möglicherweise pro Plattform anpassen. Wenn alles andere fehlschlägt, können Sie möglicherweise einen NsIFile in ~ erstellen, dann schauen Sie sich .path an; Ich bin nicht sicher, ob Shell-Ausdrücke dort geehrt werden, obwohl ...

+1

Fantastisch! In Windows ist übrigens die Umgebungsvariable USERNAME anstatt USER. Indem Sie beides versuchen, decken Sie alle gewünschten Plattformen ab. – bhollis

+0

Keine Probs. Ich stimme tatsächlich David und Dfectuoso zu - es scheint wie eine Sicherheitslücke ... In der Tat, Erweiterungen haben die gleichen Rechte wie Firefox selbst - sie sind wirklich vertraut. Ehrlich gesagt, es gibt so wenig FF-Malware! –

+0

Apropos Sicherheitslücken, Sie können USERNAME so einstellen, dass es nicht die beste Möglichkeit ist, den Benutzer zu identifizieren - sie könnten das vielleicht verwenden, um sich als jemand anders auszugeben? – Rory

0

Denke nicht, dass das möglich ist, es scheint, als wäre es ein Sicherheitsloch, wenn es wäre.

-1

Ja, nicht möglich ... Javascript läuft in einer sicheren Umgebung, und alle FF-Erweiterungen sind Javascript, so dass Sie nicht viel Interaktion mit dem OS tun können ... aber bleiben Sie krank, um zu sehen, ob jemand weiß Weg (es wäre SEHR cool ...)

1

Die gekennzeichnete richtige Antwort funktioniert gut. Ich benutze dies in unserer Erweiterung in Firefox 38. Ich verwende auch Ereignisse, damit die Seite mit der Erweiterung kommunizieren und Windows-Eigenschaften von der Erweiterung abrufen kann.

getWindowsProperty: function (prop) { zurück Components.classes ["@ mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get(prop); },