[Project_owners] nsIWindowsRegKey.getValueType Error

Jim Cuzella trinitronx at gmail.com
Thu Jan 10 10:48:38 PST 2008


I'm attempting to read some arbitrary registry value using the 
nsIWindowsRegKey object, but to do so I need to know it's type to use 
the correct read method.  However, I keep getting a NS_ERROR_FAILURE 
exception, and can't figure out why it fails.  Here is the error from 
the error console:

Error: uncaught exception: [Exception... "Component returned failure 
code: 0x80004005 (NS_ERROR_FAILURE) [nsIWindowsRegKey.getValueType]"  
nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: 
chrome://firereg/content/XPCOM.js :: readRegistryValue :: line 3"  data: no]

I've tried reading just the type with getValueType(), and it fails with 
the same error.
Here is the javascript code behind it, line 3 is the first 
wrk.getValueType(value) in the readRegistryValue() function:

function readRegistryValue(wrk, value)
{
  switch (wrk.getValueType(value)) {
    case wrk.TYPE_STRING:
      return wrk.readStringValue(value);
    case wrk.TYPE_BINARY:
      return wrk.readBinaryValue(value);
    case wrk.TYPE_INT:
      return wrk.readIntValue(value);
    case wrk.TYPE_INT64:
      return wrk.readInt64Value(value);
  }
  // unknown type
  return null;
}

function ReadReg() {
var keybox = document.getElementById("reg-key");
var keystring = keybox.value; // Read in reg key to read from input box


var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
                    .createInstance(Components.interfaces.nsIWindowsRegKey);
// Run on startup:
// SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
// AutoPlay keys:
// 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
// 
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE,
         keystring,
         wrk.ACCESS_READ);
//var id = wrk.readStringValue("ProductId");
//initialize program list string
var programs = "";


/*for ( var i=0; i<wrk.valueCount; i++ ) {
    alert("Valuecount is: " + wrk.valueCount);
    var type = wrk.getValueType(i);
    var name = wrk.getValueName(i);
    var value = wrk.readStringValue(name);
    alert(value);
    programs += name + '\t\t' + value + '\n';
}*/

var name = wrk.getValueName(0);
alert("Name: " + name);
//var type = wrk.getValueType(0);
//alert("Type: " + type);
var value = readRegistryValue(wrk,0);
alert("Value: " + value);


wrk.close();
var textbox = document.getElementById('keyvalues');
if ( programs != "" ) {
    textbox.value = programs;
    var clearbutton = document.getElementById('clear-button');
    clearbutton.disabled = false;
}
event.stopPropagation();
}

function Clear() {

var textbox = document.getElementById('keyvalues');
textbox.value = "";
var clearbutton = document.getElementById('clear-button');
clearbutton.disabled = true;

}

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 250 bytes
Desc: OpenPGP digital signature
Url : http://www.mozdev.org/pipermail/project_owners/attachments/20080110/4bd1c8ba/attachment.bin 


More information about the Project_owners mailing list