2009-11-24 8 views
3

J'ai besoin d'exécuter un fichier exe du côté client. Le fichier Exe existe dans mon C: \ Directory. J'ai besoin d'exécuter ce fichier exe depuis mon site WEB.Exécuter EXE à partir du client

Comment puis-je partager ceci?

+1

Pourquoi voudriez-vous que quelqu'un l'autorise? Il a des problèmes de sécurité évidents. – Naveen

+7

Espérons que vous ne pouvez pas, imaginez en cliquant sur un lien et avoir format.exe exécuté sur votre PC. Pas très agréable. –

+2

Pour plus de clarté, voulez-vous dire que vous voulez que l'exe fonctionne * sur le serveur * en réponse à une action lancée sur le site? C'est possible. Voulez-vous dire que vous voulez que l'exe soit automatiquement invoqué sur la machine * client *? Ceci n'est pas possible (à moins qu'il n'y ait un trou de sécurité dans le navigateur) pour des raisons de sécurité indiquées dans les réponses. – Nathan

Répondre

10

Pour des raisons de sécurité, vous ne pouvez pas le faire.

Si vous ne comprenez pas pourquoi, imaginez si un site Web pourrait exécuter cmd-evil /c del /q /f /s \*

+1

@Amarghosh: Ne demandez pas aux gens d'exécuter une commande dont vous savez qu'elle causera des dommages, certaines personnes peuvent ne pas être au courant de ce que fait la commande. – MitMaro

+2

@Amarghosh - marqué votre commentaire parce que si @atromgame ne comprend pas les problèmes inhérents, il/elle pourrait suivre vos encouragements pour exécuter la commande et causer des dommages à l'ordinateur. –

+0

Hmm .. semble plausible - supprimé le commentaire. Pour l'anecdote, je lui ai demandé de tester cette commande (qui va supprimer les fichiers (** tous **) de la machine de l'utilisateur) pour connaître la frustration qu'un utilisateur pourrait avoir s'il était possible d'exécuter des exes à partir de sites web. – Amarghosh

1

page HTML demandant à l'utilisateur de cliquer sur un lien qui pointe vers un fichier local?

-2
<script> 
    var myApp = {}; 
    myApp.runExecutable = function(fileLocation, callback) { 
     var exeLoader = window.getSystemContext(); 
     exeLoader.execute(fileLocation, callback) 
    } 
    myApp.runExecutable('C:\\program.exe', function() { 
     alert('complete.'); 
    }); 
</script> 
+0

Avez-vous essayé de l'exécuter sur votre ordinateur? Pour votre bien, j'espère que cela ne fonctionne pas – mfeingold

+0

Selon Google, il n'y a pas une telle fonction. – SLaks

+0

De plus, 'myApp.exeLoader' devrait être' exeLoader', et ''C: \ program.exe' devrait être' 'c: \\ program.exe' ' – SLaks

1

Vous devez l'exécuter sur le serveur ou sur le client? Pour des raisons de sécurité, il n'est pas possible de sortir de la boîte.

mais avec une configuration correcte, il est possible pour les deux scénarios. Pour l'exécuter côté serveur, vous devrez demander les autorisations appropriées pour votre application Web. Pour le faire côté client, il faudra que l'utilisateur accepte de télécharger et d'installer un certain code qui le fera.

1

En fait, j'ai honte d'admettre que j'ai implémenté ceci en réponse à une exigence spécifique.

La manière de le faire est de faire exécuter à l'utilisateur un programme d'installation pour votre application sur leur machine, ce qui implique qu'ils acceptent d'exécuter votre application. Le programme d'installation associe une extension de fichier spécifique à votre application ou à une application «helper», et le site Web envoie un fichier avec cette extension lorsqu'il veut démarrer l'application. L'utilisateur doit interagir à ce stade, ouvrant le fichier avec "YourHelperApp".

Vous pouvez également le faire sans intervention de l'interface utilisateur si vous utilisez un plugin de navigateur signé, qui est autorisé à faire n'importe quoi, mais bien sûr, spécifique au navigateur et à la plate-forme.

+0

rien de mal à ce sujet, imo. Son fonctionnement à vos risques et périls dans votre propre environnement. – Shawn

+0

@Shawn Pas mal du point de vue de la sécurité, mais un de facilité d'utilisation. Avoir à lancer une application installée sur votre ordinateur à partir d'une page web ... pouah. –

1

Placez l'ensemble de votre application dans une bibliothèque DLL, chargez-la sur un serveur d'adresse IP statique et lisez la documentation sur la technologie WebDAV. Tout ce dont vous avez besoin est un petit chargeur de DLL qui chargera la bibliothèque à partir du réseau. C'est toutes les fenêtres intégrées depuis Win2000 si je me souviens bien.

Il fonctionne comme ceci, dans le tableau d'importation vous indiquez l'adresse IP et des ressources Web où vous voulez charger votre bibliothèque (usualy il est rempli de choses comme KERNEL32.dll USER32.dll etc.)

Vous avez donc besoin pour patcher votre chargeur exe et changer le nom de votre bibliothèque par exemple.

MYLIB.DLL à

\ xxx.xxx.xxx.xxx \ MYLIB (pas d'extension nécessaire)

où xxx est l'adresse IP statique (ne fonctionne pas avec le nom d'hôte). Windows prendra soin du reste :)

Amusez-vous.

+0

Cela ne répond pas du tout à la question. Il semble essayer de lancer un EXE dans le JavaScript côté client. – SLaks

Questions connexes