Running executable using UniversalXPConnect
Hi I am using following javascript to run windows program but I get error message ->typeerror:netscape.security.privilegemanager is undefined. I am running firefox version 31. Is this outdated in latest versions of firefox ? If yes, can you please tell me the alternatives ?
function runApp() {
var ua = navigator.userAgent.toLowerCase(); if (ua.indexOf("msie") != -1) { MyObject = new ActiveXObject("WScript.Shell") MyObject.Run(path); } else { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var exe = window.Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile); exe.initWithPath(path); var run = window.Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess); run.init(exe); var parameters = ["/c start winword.exe"]; run.run(false, parameters, parameters.length); }
} catch (ex) { alert(ex.toString()); }
Todas las respuestas (3)
Support for UniversalXPConnect has been removed quite some time ago and you can no longer use this method to run privileged code. You would need an extension to run a program.
There are extensions that you can look at.
- External Application Buttons 2: https://addons.mozilla.org/firefox/addon/external-application-button/
- PrefBar: https://addons.mozilla.org/firefox/addon/prefbar/
What do I need to make the following code work? Do I need any adds on for this ?? [Firefox version 31]
//Components.utils.import("resource://gre/modules/FileUtils.jsm");
//var env = Components.classes["@mozilla.org/process/environment;1"] // .getService(Components.interfaces.nsIEnvironment); //var shell = new FileUtils.File(env.get("COMSPEC")); //var args = ["/c", "ping stackoverflow.org"];
//var process = Components.classes["@mozilla.org/process/util;1"] // .createInstance(Components.interfaces.nsIProcess); //process.init(shell); //process.runAsync(args, args.length);
See also:
You need to run such code from within an extension to have the proper chrome privileges.