Comment ouvrir .EXE avec Javascript / XPCOM en tant que Windows "Exécuter …"?

J'ai une application Web intranet qui doit exécuter certaines applications externes, comme Word, Bloc-notes et d'autres … Mon code permet l'accès avec IE (ActiveX) et Firefox (XPCOM). Lorsque j'utilise tout le chemin (comme "C: \ windows \ notepad.exe"), je peux exécuter dans les deux navigations, mais le problème est: il existe beaucoup de versions pour certaines applications comme Microsoft Word (2003, 2007, 2010 .. .), Et le chemin local est toujours différent, MAIS si j'utilise l'option "Exécuter …" dans Windows, je peux seulement taper "winword.exe" et MS Word charge, en plus de sa version. Si je ne passe que le nom de fichier à ActiveX dans IE, je peux appeler MS Word, mais dans Firefox, avec XPCOM, je ne le suis pas. Donc, ma question est la suivante: Est-ce qu'il existe un moyen de faire fonctionner le code XPCOM sur MS Word avec son chemin relatif (nom de fichier)? J'ai testé de nombreuses façons mais sans succès.

Voici mon code:

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()); } } 

Et l'appel a été fait comme ceci:

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

Toute aide serait appréciée. Je vous remercie.

Je pense que votre problème réside dans le fait que IE fonctionne directement avec Windows, où Firefox est destiné à être multiplate-forme. En supposant que vous voulez seulement que cela fonctionne sur Windows, vous pouvez exécuter l'invite de commande

  C:\Windows\System32\cmd.exe 

Et lui transmettre un argument comme

  start winword.exe 

Ensuite, il fonctionnera de la même manière que Run.