, Таким образом, вы всегда будете иметь правильный путь.

я есть веб-приложение для интрасети, которому нужно запускать некоторые внешние приложения, такие как Word, Notepad и другие ... Мой код разрешает доступ с помощью IE (ActiveX) и Firefox (XPCOM). Когда я использую весь путь (например, «C: \ windows \ notepad.exe»), я могу работать в обоих браузерах, но проблема в том, что существует множество версий для некоторых приложений, таких как Microsoft Word (2003, 2007, 2010 .. .), и локальный путь всегда отличается, НО, если я использую опцию «Выполнить ...» в Windows, я могу печатать только «winword.exe» и загрузки MS Word, кроме его версии. Если я передаю только имя файла ActiveX в IE, я могу вызвать MS Word, но в Firefox с XPCOM я не могу. Итак, мой вопрос: есть ли способ заставить код XPCOM запускать MS Word только с его относительным путем (имя файла)? Я проверил множество способов, но безуспешно.

Вот мой код:

function RunExe(path) {
    try {            
        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 = [""];
            run.run(false, parameters, parameters.length);
        }
    } catch (ex) {
        alert(ex.toString());
    }
}

И звонок был сделан так:

 <a href="#" onclick="javascript:RunExe('winword.exe');">Open Word</a>

Любая помощь будет оценена. Спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос