mozilla
Your Search Results

    nsIRegistry

    Obsolete
    This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

    nsIRegistry on MXR

    Other documentation: libreg source, reg.h in particular

    Okay!

    appreg.

    It works like this.

    var Cc = Components.classes;
    var Ci = Components.interfaces;
    var rc = Cc["@mozilla.org/registry;1"];
    var rs = rc.getService(Ci.nsIRegistry);
    

    Now you have the registry service.

    rs.openWellKnownRegistry(2);  // 2 signifies the ApplicationRegistry, if I understand right
    var st = rs.enumerateAllSubtrees(2);  // 2 signifies "common", see libreg source (reg.h) for info
    

    Now you have an nsIEnumerator that can report the subtrees.

    try {
      st.first();
      do {
        var data = st.currentItem();
        if( data instanceof Ci.nsIRegistryNode )
          print("nsIRegistryNode: " + data.nameUTF8 + " (" + data.key + ")");
        st.next();
      } while( Components.lastResult == 0 );
    } catch(e) {}
    

    Now, the output is something like:

    Profiles (344)
    Profiles/default (530)
    Profiles/foo (1046)
    Profiles/bar (1518)
    

    The number inside the parenthesis is the "key." You can use this key with the rest of the nsIRegistry API (see MXR).

    Now, I know from visual inspection that there's a key called "directory" for each profile. I don't know how to get the other keys' names automatically, but I do know how to look up the directory for a particular profile.

    js> rs.getStringUTF8(530, "directory")  // 530: key corresponding with Profiles/default
    

    The output is something like:

    /home/lion/.mozilla/default/awp83kud.slt
    

    Boo-yah!

    Can we change it?

    js> rs.setStringUTF8(530, "directory", "/home/lion/somewhere/else")
    js> rs.getStringUTF8(530, "directory")
    /home/lion/somewhere/else
    

    Yes!

    Now, the only puzzle is: how do you save it?

    js> rs.flush()  // this is not enough...
    

    Perhaps if we quit with the XPConnect:appShellService, it will work.

    Document Tags and Contributors

    Contributors to this page: LionKimbro, PWeilbacher, groovecoder, Nickolay, Sheppy
    Last updated by: Sheppy,