【问题标题】:How to get the current Firefox profile path from within my applet?如何从我的小程序中获取当前的 Firefox 配置文件路径?
【发布时间】:2011-04-17 17:47:02
【问题描述】:

我在我的小程序中使用Network Security Services for Java (JSS) by Mozilla,以便允许我的(签名的)Java Applet 和 Mozilla Firefox 之间进行一些低级交互。

我面临的第一个问题是如何找到当前的 Firefox 配置文件路径。我需要它是因为我必须调用 CryptoManager 的initialize(String configDir) 方法,而所谓的 configDir 必须是 Firefox 配置文件的目录。

如何获取当前 Firefox 配置文件的完整路径?有没有一种干净的方法,或者我必须去阅读 {$APPDATA}/Firefox 中的profiles.ini,解析它,然后选择一个随机的配置文件(希望它只是一个,或者我得到的那个是正确的)?

提前致谢

【问题讨论】:

  • 其实不用读profiles.ini就可以启动Firefox,所以不靠谱。我知道的唯一可靠的方法是 XPCOM 目录服务,但我不知道你是否可以访问它。
  • 我可以访问 Java 程序可以访问的所有内容,甚至是 JNI。 (这是一个签名的小程序)
  • 那么你能写一个 JNI 类,它也是一个 XPCOM 二进制扩展吗?
  • 我不知道XPCOM是什么,我会深入研究它。谢谢。

标签: java firefox applet


【解决方案1】:

在 Javascript 中,您可以获取配置文件和可执行目录:

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

【讨论】:

  • 完美,但如何将配置文件作为参数传递给小程序?
  • 现在,我如何从 Java 小程序中调用这句话 Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path
【解决方案2】:

您可以尝试在此处查看第 1.3.2 节

http://kb.mozillazine.org/Profile_folder_-_Firefox#Using_the_JavaScript_or_Error_Console

希望对您有所帮助。

【讨论】:

  • 这些技巧在 Firefox 控制台中有效,但不是标准的 javascript(它会带来安全问题)。我怎样才能以某种方式在我的小程序中使用它?
猜你喜欢
  • 2011-02-26
  • 1970-01-01
  • 2022-11-06
  • 2010-12-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多