2011-04-17 17 views
8

Uygulamamda (imzalı) Java Applet ve Mozilla Firefox arasında düşük düzeyde etkileşime izin vermek için Network Security Services for Java (JSS) by Mozilla kullanıyorum.Geçerli Firefox profil yolunu uygulamamın içinden nasıl alabilirim?

Karşılaştığım ilk sorunlardan biri, geçerli Firefox profil yolunu nasıl bulacağınızdır. İhtiyacım var çünkü CryptoManager'ın initialize(String configDir) yöntemini çağırmalıyım ve configDir adlı bir Firefox profilinin dizini olmalı.

Geçerli Firefox profilinin tam yolunu nasıl alabilirim? Temiz bir yol var mı, yoksa {$ APPDATA}/Firefox'ta profiles.ini okumaya gidip onu ayrıştırıp rasgele bir profil seçmem gerekiyor (sadece bir tane olsun, ya da aldığım doğru olanı mı)?

Şimdiden teşekkürler

+0

. Bildiğim tek güvenilir yolu XPCOM dizin hizmetini içerir, ancak buna erişip erişmediğinizi bilmiyorum. – Neil

+0

Bir Java programının erişebileceği her şeye, JNI'ye bile erişebiliyorum. (Bu bir imzalı applet) – gd1

+0

Ayrıca bir XPCOM ikili uzantısı olan bir JNI sınıfı yazabilir misiniz? – Neil

cevap

5

JavaScript size profili ve yürütülebilir dizin edinebilirsiniz:

O güvenilir değildir yani, profiles.ini okumadan Firefox'u başlatmak için aslında mümkün
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 

var profile = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path 

var CurProcD = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("CurProcD", Components.interfaces.nsIFile).path 
+0

Bunu kontrol edeceğim – gd1

+0

Mükemmel, ancak profili uygulamaya nasıl bir parametre olarak iletebilirim? –

+0

Şimdi, bu cümleyi nasıl bir Java Applet 'Components.classes [" @ mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD ", Components.interfaces .nsIFile) .path' –

İlgili konular