web-dev-qa-db-fra.com

Est-il possible d'exécuter un fichier .exe ou .bat sur "onclick" en HTML

Est-il possible d'exécuter un fichier bat/exécutable à l'aide d'un événement de bouton html5? Dans IE c'est réalisable en utilisant un objet Shell si je ne me trompe pas.

34
VSr

Voici ce que j'ai fait. Je voulais une configuration de page HTML sur notre réseau afin de ne pas avoir à naviguer dans différents dossiers pour installer ou mettre à niveau nos applications. J'ai donc créé un fichier .bat sur notre lecteur "partagé" auquel tout le monde a accès. Dans ce fichier .bat, j'avais ce code:

start /d "\\server\Software\" setup.exe

Le code HTML était:

<input type="button" value="Launch Installer" onclick="window.open('file:///S:Test/Test.bat')" />

(assurez-vous que vos barres obliques sont correctes, je les ai eues dans l'autre sens et cela n'a pas fonctionné)

J'ai préféré lancer l'EXE directement, mais ce n'était pas possible, mais le fichier .bat m'a permis de le faire. Je souhaite que cela fonctionne dans FF ou Chrome, mais seulement IE.

21
Chuff

Non, ce serait une énorme violation de la sécurité. Imaginez si quelqu'un pouvait courir

format c:

chaque fois que vous avez visité leur site web.

33
Doorknob

C'est possible quand la page elle-même est ouverte via un file:/// chemin.

<button onclick="window.open('file:///C:/Windows/notepad.exe')">
    Launch notepad
</button>

Cependant, au moment où vous le mettez sur un serveur Web (même si vous y accédez via http://localhost/), vous obtiendrez une erreur:

Erreur: accès au fichier: /// C: /Windows/notepad.exe 'à partir du script refusé

18
user247702

Vous pouvez le faire sur Internet Explorer avec un composant OCX et sur chrome navigateur en utilisant un chrome extension document chrome dans tous les cas, vous avez besoin de plus paramètres sur le système client!

Partie importante de la source chrome extension:

var port = chrome.runtime.connectNative("your.app.id"); 
      port.onMessage.addListener(onNativeMessage); 
      port.onDisconnect.addListener(onDisconnected);
      port.postMessage("send some data to STDIO");

fichier de permission:

{
      "name": "your.app.id",
      "description": "Name of your extension",
      "path": "myapp.exe",
      "type": "stdio",
      "allowed_origins": [
            "chrome-extension://IDOFYOUREXTENSION_lokldaeplkmh/"
      ]
}

et paramètres de registre Windows:

HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\your.app.id
REG_EXPAND_SZ : c:\permissionsettings.json
4
Stefan Kanev

Vous ne pouvez pas exécuter/exécuter un fichier .exe se trouvant sur la machine locale de l'utilisateur ou sur un site. L'utilisateur doit d'abord télécharger le fichier exe, puis exécuter le fichier exécutable.
Il n'y a donc aucun moyen possible

Le code suivant ne fonctionne que lorsque le fichier EXE est présent dans la machine de l'utilisateur.

<a href = "C:\folder_name\program.exe">

2
coolprarun