IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Lancer .js sous forme d'un activeX


Sujet :

JavaScript

  1. #1
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut Lancer .js sous forme d'un activeX
    Bonjour, voila ma question, peut on lancer un fichier.js sous la forme d'un activeX ?

    Pourquoi ?, car IE ignore mon code en ligne (il affiche pas un pop-up demandant si oui ou non il veut exécuter ce contrôle activeX), en locale tout fonctionne en revanche.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function OuvreExecutable()
     {
        var w = new ActiveXObject("WScript.Shell");
        var myObject;
            myObject = new ActiveXObject("Scripting.FileSystemObject");
            if(myObject.FileExists('c://windows/monprog/monprog.exe')){
               w.run('%WINDIR%/monprog/monprog.exe');
            } else {
               lancertruc();
            }
    }
     
      function lancertruc() {
         var wScript = new ActiveXObject("Wscript.Shell" );
         wScript.run("http://monsite/monprog.exe");
         return false;
      }
    Peut on aussi faire un try catch afin que si la personne n'éxecute mon activeX, il execute ce code :

    document.writeln(" <META HTTP-EQUIV=\"Refresh\" CONTENT=\"1; URL=monprog.exe\"> ");

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Donc en fait ça ne te dérangerait pas qu'un site web lance un exécutable local sur ton poste ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    J'ai oubliée de précisée que c'était dans le cadre d'un intranet.

    Voila ce que je souhaite faire :

    1) La personne arrive vers la page
    2) Si le programme est installée sur sa machine, il s'exécute (IE demande confirmation)
    3) Sinon, il lance le téléchargement

    4) Si la personne a les activeX de désactivée, mon code ne marchera donc pas, il affiche un message a la personne "Veuillez accepter ce site comme si de confiance....)

  4. #4
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    Personne(s) pour m'aider ?

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    des centaines voire de milliers d'ingénieurs de par le monde tentent de garantir un minimum de sécurité dans le navigateurs
    et tu demmande comment mettre tout ce travail à la pobelle

    et qu'il s'agise d'intraner extranet appli locale à une seule machine ou pas ça ne change pas la donne un navigateur est conçu pour assurer un minimum de sécurité
    ce que tu veux faire ne relève pas d'une petite entorce mais d'une suppréssion de toute forme de sécurité.

    rien d'annormal donc que tu n'ait que peu ou pas de réponses.
    A+JYT

  6. #6
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    Mon programme fonctionne très bien en locale je le répète, seulement j'ai 1 problèmes :

    1) En intranet, IE ne demande pas si je peut ou pas lancer cette activeX, il l'ignore !
    C'est pour cela que j'envisage une autre solution (qui marche cette fois ci) c'est de mettre mon js sous forme d'un activeX qui s'installe (ou la IE demande si oui ou non l'activeX veut bien s'installer) mais je ne sais pas comment faire pour exécuter monscript.js sous la forme d'1 activeX.

    Ou bien 2eme solution :
    Existe t'il un moyen de vérifier si mon programme a fonctionner ou pas chez le client (avec un try catch) ? dans le cas contraire je lui affiche un message.

  7. #7
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    En gros je demande si il est possible de tester ma fonction JavaScript.
    Si le test échoue, alors j'affiche un message.

    Il n'y a donc aucune sécurité a cassée la dedans.

  8. #8
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Ce que tu cherche à faire c'est vérifier sur le poste de l'utilisateur qu'il a ou pas une ressource que tu voudrait exploité.
    le simple fait de chercher à savoir ce qu'il a sur le poste d'un utilisateur est une intrusion.

    il faut considérer qu'une applie web est une application qui s'éxécute dans un environnement fictif qui est imperméable au reste de l'univers.
    cet environement est à cheval sur le poste des client, sur le réseau et sur le serveur.
    chacun de ces trois élément va mettre à disposition un bout d'espace tout en l'isolant le plus possible de reste du monde.

    le développeur du serveur défini ce qu'il est on non possible de faire. ainsi si le développeur du serveur et l'admin système à réduit l'access au ressource le développeur ne poura pas déroger à cette règle.

    de même côté client le navigateur met en place une politique de sécurité qui consiste à dire que ce qui est dans la page est dans le préimère de l'application web et hors de la machine ce qui est sur la machine est hors de l'application web. le navigateur offre le sevice d'accès à qulque ressource mais il limte l'accès à l'OS.

    toi ce que tu veux c'est exécuter quelque chose dans le contexte de la web app qui va voir dans le contexte de l'utilisateur.
    ça s'apple du piratage.
    peu importe que tu pense que dans ton contexte c'est légitime. passer la barrière c'est du piratage.

    A+JYT

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    moi pour bien comprendre les tenants, je viens d'aller sur http://fr.wikipedia.org/wiki/ActiveX, et la finalité si j'ai bien compris, et que de manière général les ActiveX sont des "composants logiciels"... Donc ce n'est pas IE ou tout autre navigateur ( ou tout autre logiciels ) qui bloque les activeX, mais bel est bien celui qui les gères, ton OS!

  10. #10
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    Le problème n'est pas qu'il les bloquent, je trouve cela normale, c'est qu'il ne demande pas a l'utilisateur si il veut les exécuter.

    Alors que si je mets un activeX a installer, la oui IE demande a l'utilisateur si il veut installer l'activeX.

  11. #11
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    C'est bon j'ai trouvée.

  12. #12
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    même pour un activex cela ne dépends que de la conf côté utilisateur.
    chez nous interdit d'installer un activex donc IE ne demande même pas. et l'utilisateur ne peux pas changer sa conf.

    A+JYT

  13. #13
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Citation Envoyé par sazearte Voir le message
    C'est bon j'ai trouvée.
    Bonjour,
    Pour la postérité peux-tu s'il-te-plaît prendre le temps d'expliquer en quelques mots la solution que tu as trouvée ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  14. #14
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    J'ai utilisée un entier a qui est égal a 0, si les activeX sont activée, l'entier passe a 1.

    Je récupere mon entier, si a=0 alors j'affiche un message si a=1 alors je ferme la page web.

  15. #15
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    dans le genre...

    tu pourrais surement décrire plus en détail ta solution, non?

  16. #16
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    Voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <HTML>
     <HEAD>
     
    <SCRIPT LANGUAGE="javascript">
     <!--
     var test;
     test = 0;
     var proc = new ActiveXObject("xxxx.yyyy");
    function OuvreExecutable()
     {
    	var w = new ActiveXObject("WScript.Shell");
    	var myObject;
            myObject = new ActiveXObject("Scripting.FileSystemObject");
            if(myObject.FileExists('c://windows/monprog.exe')){
               w.run('%WINDIR%/monprog.exe');
            } else {
               lancertruc();
            }
    	test = 1;
    	return test;
    }
     
      function lancertruc() {
         var wScript = new ActiveXObject("Wscript.Shell" );
         wScript.run("install.exe");
         return false;
      }
    </script>
     
     </HEAD>
     
     <BODY>
     <center>
      <a href="javascript:window.location.reload()"> <img src="update.gif"> </a> 
      <p> Refresh </p>
       </center>
     <form>
     <script> OuvreExecutable();</script>
     </form>
     <script>
     if (test == 0) {
     window.location.assign("install.exe");
     } else {
     window.close();
     }
     </script>
     </BODY>
     </HTML>
    Par contre y'a un problème a la ligne :
    if(myObject.FileExists('c://windows/monprog.exe')){
    %WINDIR%/monprog.exe ne marche pas si quelqu'un sait pourquoi.

  17. #17
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par sazearte Voir le message
    ...

    Par contre y'a un problème a la ligne :
    if(myObject.FileExists('c://windows/monprog.exe')){
    %WINDIR%/monprog.exe ne marche pas si quelqu'un sait pourquoi.
    depuis le début on te dit que le navigateur est conçu de façon à protéger l'utilisateur d'intrusion
    ton code de ta page web est considéré comme un programme externe. il ne peu avoir le droit de lire ce qu'il y a sur le poste de l'utilisateur.

    ce n'est pas difficile à comprendre.
    %WINDIR% est une variable de l'environnement de l'utilisateur elle n'est pas définie dans l'espace Web.
    si tu veux connaitre sa valeur il te faut instancier un activex qui li la base de registre.

    là encore tu créer un trou béant dans la sécurité de ton entreprise.
    Libre à toi
    mais prie pour que personne ne découvre la brèche car là il y a tout ce qu'il faut pour installer sur tout les poste de ton intranet des bots qui pourront faire n'importe quoi. Pour si peu qu'un des utilisateur ai des droit admin tu as anéanti toute sécurité.

    en intranet il y bien d'autre façon bien plus propre de déployer un applicatif sur l'intranet. les outils windows sont prévu pour ça.
    quant à le lancer il suffit de définir un protocole ad-hoc.
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    A+JYT

  18. #18
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    Tu ne répond pas forcement a mon problème :

    Pourquoi sa sa marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    w.run('%WINDIR%/monprog.exe');  //(on exécute un programme)
    Alors que sa sa ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(myObject.FileExists('%WINDIR%/monprog.exe')){  //(on regarde si le programme existe)
    C'est pas très logique... de plus je contourne ce problème en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(myObject.FileExists('c://windows/monprog.exe')){
    Il est la le problème, au pire c'est pas très grave, car Windows et soit installer dans C:\Windows soit dans C\Winnt dans 99, 99% des cas.
    Au pire je peut faire un programme qui remplace C par toute les lettre de l'alphabet (de A a Z) pour être sur que l'application n'est pas installée, mais c'est pas pratique....

    Ce programme est a destination de pc sous Win98 et Windows Nt4.0/2000 sous Ie6 max.

  19. #19
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Je maintiens que tu prend le problème à l'envers.

    Si une application doit être déployée dans l'entreprise alors il suffit d'utiliser les outils système de déploiement.
    cela se fait en toute sécurité.

    ensuite comme écrit dans les urls que je t'ai donné il est simple de la même façon d'associer ton application avec un protocole handler

    ensuite pour lancer ton application en toute sécurité il suffit de fournir un lien avec ton protocole.

    et tout ça sans bricolage sans trou de sécurité. compatible avec tous les navigateurs.

    Je ne comprends pas pourquoi tu veux à tout prix casser la sécurité de ton intranet pour reproduire quelque chose qui se fait simplement.

    pour ce qui est du pb de windir
    il te faut voir la doc de "WScript.Shell" et "Scripting.FileSystemObject"
    Ces deux objet Microsoft ont leur propre façon de traiter leurs paramètres. ce n'est pas Javascript qui peut changer la donne à ça.

    A+JYT
    PS: exemple de protocole
    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\myapp]
    @="URL: myapp Protocol"
    "URL Protocol"=""

    [HKEY_CLASSES_ROOT\myapp\shell\open\command]
    @="\"myapp.exe\" %1"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\myapp]
    @="URL: myapp Protocol"
    "URL Protocol"=""

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\myapp\shell\open\command]
    @="\"myapp.exe\" %1"

    un lien myapp://un/chemin/quelconque/vers/ce/que/l/on/veut/?test=67
    lancera l'application
    myapp.exe "myapp://un/chemin/quelconque/vers/ce/que/l/on/veut/?test=67"

    il suffit alors à myapp.exe de décortiquer l'url pour en extraire ses paramètres.

    A+JYT

  20. #20
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    C'est bon j'ai trouvée un moyen de contourner ce problème, pour récupérer %WINDIR% :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     function GetUserName(){           
    		var wshshell=new ActiveXObject("wscript.shell"); 
    		var username=wshshell.ExpandEnvironmentStrings("%windir%");
    		return username;
          }
    Pour remplacer par exemple C:\Windows en c://windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	a = GetUserName(); 
    	win = a.replace(/\\/g,"\//");
    On insère la variable dans le chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          if(myObject.FileExists(''+win+'/monprog.exe')){
    Et voila.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [10g] Comment lancer une requête sous forme de " forms"
    Par lionrouge2009 dans le forum Forms
    Réponses: 2
    Dernier message: 06/08/2013, 18h48
  2. Réponses: 0
    Dernier message: 14/05/2008, 10h30
  3. Réponses: 2
    Dernier message: 21/04/2007, 14h59
  4. [Turbo Pascal] Entrée au clavier sous forme ******
    Par Upal dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 15/02/2003, 14h42
  5. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo