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

я есть веб-приложение для интрасети, которому нужно запускать некоторые внешние приложения, такие как 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)

Решение Вопроса

что ваша проблема заключается в том, что IE напрямую работает с Windows, где Firefox предназначен для кроссплатформенности. Если вы хотите, чтобы это работало только в Windows, вы можете выполнить командную строку

    C:\Windows\System32\cmd.exe

и передать это аргумент, как

    start winword.exe

Затем он будет работать так же, как Run.

 thiagoprzy31 мая 2011 г., 14:53
Отлично, Майк С! Оно работало завораживающе!
 Tersosauros27 мар. 2016 г., 11:00
@Fyodor Soikin Правда, как примечание для будущих пользователей техники @Mike C здесь - используйте%WINDIR% вместо.то есть %WINDIR%\System32\cmd.exe, Таким образом, вы всегда будете иметь правильный путь.
 thiagoprzy31 мая 2011 г., 15:02
Просто на случай, если кто-то заинтересовался этим, я передал аргумент так: параметры = ["/ c начало" + путь]; // путь, в этом случае, является «winword.exe»
 Rebol Tutorial25 июн. 2011 г., 18:14
чтобы быть более ясным, смотрите здесьstackoverflow.com/questions/6472435/...
 Fyodor Soikin26 нояб. 2012 г., 14:15
Обратите внимание, что теоретически Windows может быть установлена ​​в каталог, отличный отC:\Windows.

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