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;

}

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Project_owners mailing list
[email protected]
https://www.mozdev.org/mailman/listinfo/project_owners

Reply via email to