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

WinDev Discussion :

LanceAppli et Webservice Windev


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut LanceAppli et Webservice Windev
    Bonjour,

    Je dois réaliser un webservice qui pourra permettre de changer les mots de passe utilisateurs de windows.
    J'ai essayé avec les fonctions LDAP, sans succés.

    J'ai trouvé sur internet un petit script qui permet de modifier les mot de passe, il fonctionne très bien, je l'ai adapté pour qu'il prenne en compte 3 paramètres (Nom, Ancien mdp et Nouveau mdp). Lorsque que je suis en mode debug, le script est bien lancer par le webservice via la commande LanceAppli.

    Cependant, lorsque le webservice est déployé impossible de lancer le script, comme LanceAppli est en mode Bloquant, la page de test du webservice tourne en boucle.(Marche pas en mode nonBloquant non plus, de toute façon)

    Il est a noté que le script est un vbs, que je le lance grâce a wscript.exe, est qu'il apparaît bien dans mes processus actifs sans pour autant fonctionner.

    Voici le code du webservice:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sTexte est une chaîne
    sTexte = "scriptmdp.vbs" + "  " + NomUser + " " +AncienMdP+ " " +NouveauMdP
     
    exec est une chaîne = "C:\WINDOWS\System32\WScript.exe"
    chaineScript est une chaîne = exec + " " + sTexte
     
    SI LanceAppli(chaineScript,exeActif,exeBloquant) ALORS	
    	RENVOYER "Ok"
    SINON
    	RENVOYER ErrorInfo(errComplet)
    FIN

    Voici le code du script (au cas où):

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    option explicit
     
    const strLDAPRoot = "LDAP://MonDomaine"
    const intNormalOperation = 0
    const intUserNotFound = 1
    const intCouldNotChangePassword = 2
     
    dim strUserName
    dim strUserOldPassword
    dim strUserNewPassword
    dim strUserDN
     
    strUserName = Wscript.Arguments(0)
    strUserOldPassword = Wscript.Arguments(1)
    strUserNewPassword = Wscript.Arguments(2)
     
    strUserDN = GetUserDistinguishedname(strLDAPRoot, strUserName)  
    if strUserDN <> "" then
     ChangeUserPassword strUserDN, strUserOldPassword, strUserNewPassword
     CheckForError intCouldNotChangePassword
     
     wscript.quit intNormalOperation
    else
     wscript.quit
    end if
     
    Function GetUserDistinguishedName(strLDAPRoot, strSamAccountName)
     dim objConnection
     dim objCommand
     dim objRecordset
     
     Set objConnection = CreateObject("ADODB.Connection")
     objConnection.Open "Provider=ADsDSOObject;"
     
     Set objCommand = CreateObject("ADODB.Command")
     objCommand.ActiveConnection = objConnection
     objCommand.CommandText = "SELECT distinguishedName FROM '" & strLDAPRoot & "' WHERE objectCategory='user' AND sAMAccountName='" & strSamAccountName & "'"
     Set objRecordSet = objCommand.Execute
     
     if Not objRecordset.EOF then
      GetUserDistinguishedName = objRecordset.Fields("distinguishedname")
     end if
     
     objConnection.Close
    End Function
     
    Function GetUserLastPasswordChange(strUserDN)
     dim objUser
     
     Set objUser = GetObject("LDAP://" & strUserDN)
     GetUserLastPasswordChange = objUser.PasswordLastChanged
    End Function
     
    Function ChangeUserPassword(strUserDN, strOldPassword, strNewPassword)
     dim objUser 
     MsgBox "je suis dans la fonction : ChangeUserPassword"
     Set objUser = GetObject("LDAP://" & strUserDN)
     objUser.ChangePassword strOldPassword, strNewPassword
     
     
    End Function
     
    Sub CheckForError(intErrorCondition)
     if err.number <> 0 then
      wscript.quit intErrorCondition
     end if
    end sub
    Merci d'avance !

  2. #2
    Membre habitué Avatar de Christophe.LOGEL
    Homme Profil pro
    Expert WinDev / WebDev
    Inscrit en
    Mars 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Expert WinDev / WebDev
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 121
    Points : 182
    Points
    182
    Par défaut
    Bonjour,

    C'est certainement une histoire de droits du compte utilisateur lié au webservice.

    Cordialement,
    Christophe LOGEL
    www.sigmasys.fr

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci pour la rapidité de votre message !

    Je ne comprends pas trop votre réponse désolé...
    Le webservice est sur un serveur local en tout cas.

    Comment puis-je vérifier qu'il s'agisse bien d'une question de droits utilisateur ?

    Cordialement,

    Alex

    EDIT: J'ai essayé en lancant notepad.exe, même résultat, le processus est actif dans le gestionnaire mais rien ne se passe

  4. #4
    Membre habitué Avatar de Christophe.LOGEL
    Homme Profil pro
    Expert WinDev / WebDev
    Inscrit en
    Mars 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Expert WinDev / WebDev
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 121
    Points : 182
    Points
    182
    Par défaut
    Bonjour,

    D'après le script, vous devez être en SSO pour que ca fonctionne (avec votre compte utilisateur) donc si vous utilisez apache, il faut que le compte du service qui lance apache ai les droits d'accès au LDAP ou bien que dans le script vbs vous vous authentifiez en tant qu'utilisateur sur le domaine.

    Nom : Sans titre.png
Affichages : 630
Taille : 14,7 Ko

    Cordialement,
    Christophe LOGEL
    www.sigmasys.fr

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai essayé, aucun changement...

    De plus pas besoin d'avoir de droit particulier pour lancer notepad.exe donc le problème ne doit pas venir de là.

    Merci tout de même =)

  6. #6
    Membre habitué Avatar de Christophe.LOGEL
    Homme Profil pro
    Expert WinDev / WebDev
    Inscrit en
    Mars 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Expert WinDev / WebDev
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 121
    Points : 182
    Points
    182
    Par défaut
    Si on lance notepad c'est normal qu'il apparaisse dans le gestionnaire des tâches mais comme notepad ne se ferme pas tout seul, le webservice reste bloqué (avec exebloquant).
    Christophe LOGEL
    www.sigmasys.fr

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Lorsque que je lance le script directement avec l'invite de commande windows:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >MonRep\wscript scriptmdp.vbs nomUser ancienMdP nouveauMdP
    Cela fonctionne.

    Via LanceAppli() du webservice, wscript.exe apparaît dans les gestionnaire de processus mais ne fait rien.

    Pareil pour notepad.exe, il apparaît dans le gestionnaire mais ne se lance pas.

    Cordialement,

    Alex

Discussions similaires

  1. [WD17] LanceAppli vers programme windev et instructions de graphe => crash
    Par droliprane dans le forum WinDev
    Réponses: 6
    Dernier message: 04/07/2015, 13h42
  2. [WD17] Webservice Windev pour impression d'un fichier Word
    Par Centrallatice dans le forum WinDev
    Réponses: 0
    Dernier message: 27/02/2014, 14h51
  3. [WD17] Webservice windev pour windev mobile
    Par wincroc dans le forum WinDev
    Réponses: 2
    Dernier message: 29/07/2012, 20h05
  4. Peut on utiliser des Webservices WinDEV avec PHP ?
    Par budiste dans le forum WebDev
    Réponses: 8
    Dernier message: 30/03/2006, 11h56

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