Comment puis-je exécuter un programme ou un fichier batch sur le côté client?

Comment puis-je exécuter un fichier batch sur le côté client? Un fichier exe? Juste pour ouvrir le programme pré-installé côté client?

[Modifier]

En ce qui concerne ActiveX, j'ai essayé

var activeXObj = new ActiveXObject("Shell.Application"); activeXObj.ShellExecute("C:\\WINDOWS\\NOTEPAD.EXE", "", "", "open", "1"); 

Mais cela ne fonctionne pas. Aucune suggestion?

De Javascript? Vous ne pouvez pas. C'est un risque pour la sécurité. Pensez-y – voulez-vous que chaque site Web puisse exécuter des programmes sur votre PC?

Vous voulez dire lancer un programme externe via une fenêtre de navigateur avec JavaScript? Vous ne pouvez pas faire ça! C'est un puissant trou noir de sécurité!

 <script language="javascript" type="text/javascript"> function RunEXE(prog) { var oShell = new ActiveXObject("WScript.Shell"); oShell.Run('"' + prog + '"', 1); } </script> 

Rediriger le client vers http: //yourserver/batchfile.bat . Sous certains navigateurs, cela incitera l'utilisateur à exécuter le fichier de commandes.

Si vous avez vraiment le contrôle sur le client, vous voudrez peut-être installer un service de déménagement distant du côté client, comme SSH.

PS. Invoquez-le à travers votre «code serveur», cependant.

Actualisé:

Ne soyez pas découragé. Vous pouvez absolument faire cela de manière sûre.

  1. D'abord, vous avez besoin d'un service Daemon sur le client qui prend en charge la tâche d'invoquer votre application. Personnellement, je préfère construire un simple serveur rpc comme service Windows avec C ++ ou Delphi; Mais beaucoup d'autres types de serveur pourraient également faire le travail (SSH, Apache, Telnet)

  2. Ensuite, créez une page Web qui permet à l'utilisateur de "enregistrer" ses services avec une authentification appropriée pour appeler ce service (mot de passe, clé de sécurité)

  3. Lorsque vous souhaitez appeler votre application à partir d'une page Web sur le client déjà enregistré, effectuez un appel ajax (xmlhttprequest) sur votre serveur.

  4. Le serveur doit valider l'adresse IP requise avec des informations enregistrées.

  5. Ensuite, faites une invokation de commande à distance au client avec les informations enregistrées.

Il peut y avoir une situation de réseautage que ce schéma pourrait ne pas fonctionner. Cependant, si vous avez vraiment le contrôle sur l'environnement d'exécution, il existe toujours des solutions de contournement.

Si le problème est que le fichier batch est affiché dans le navigateur, vous devez définir Content-Type et Content-Disposition dans l'en-tête HTTP afin que l'utilisateur soit invité à enregistrer (ou à exécuter) le fichier plutôt que le navigateur l'afficher.

Vous ne pourrez pas exécuter le fichier sans un OK de l'utilisateur mais cela ne devrait pas poser de problème.

Jetez un oeil à cette question pour plus de détails.

Fondamentalement, vous ne pouvez pas. Si vous devez lancer quelque chose du côté du client, vous aurez besoin d'un autre mécanisme, probablement un avec une certaine sécurité intégrée. Une affiche précédente a mentionné psexec ( http://technet.microsoft.com/en-us/sysinternals/bb897553 .aspx ), qui ne fonctionnera évidemment que si vous disposez d'autorisations appropriées sur le système cible et qui se trouve complètement en dehors du navigateur.

Fondamentalement, ce que vous demandez est un problème GRAND, GRAND, si vous pouviez le faire facilement.

Vous pouvez regarder dans ActiveX, mais je ne sais pas quelles limites existe sur un objet ActiveX ces jours-ci (je sais qu'il y a des limites, mais peut-être que vous pouvez travailler en leur sein).