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

VBScript Discussion :

XRUNAS - Lancement de programme en tant que


Sujet :

VBScript

  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2010
    Messages : 12
    Par défaut XRUNAS - Lancement de programme en tant que
    Bonsoir tout le monde,

    Je n'écris pas souvent vu que je trouve régulièrement les réponses à mes questions sur le forum ou via l'ami Google mais là je sèche !!!

    un scrip VBS va être lancé (via GPO) à chaque lancement des PC de ma boite (script qui à pour but de vérifier la présence de l'anti-virus et de l'installer si besoin).

    Je vous passe les détails de vérification, tout fonctionne de ce côté là.

    J'aimerais utiliser le script XRUNAS.VBS (de JC BELLAMY) de façon à pouvoir spécifier le nom d'utilisateur et le mot de passe à utiliser pour lancer mon script.

    Voici les lignes que j'ai essayées et qui fonctionnent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell.run "cscript C:\xrunas.vbs /profile /user:domaine\utilisateur /pwd:motdepasse c:\windows\system32\notepad.exe"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell.run "cscript C:\xrunas.vbs /profile /user:domaine\utilisateur /pwd:motdepasse "&prog&""
    Je vais y aller par étapes.
    Mon premier objectif serait de faire fonctionner la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell.run "cscript C:\xrunas.vbs /profile /user:domaine\utilisateur /pwd:motdepasse ""\\serveur\Symantec\MSI Installer 11.0.7101.89\Symantec AntiVirus.msi"""
    J'ai également tenté de retirer tous les espaces dans le chemin et dans le nom du fichier sans plus de succès.

    J'espère avoir été assez clair dans mes explications et que vous pourrez m'aider.

    Merci d'avance
    Pierre

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Arghh le mot de passe admin en dur dans le script ...
    Je ne suis pas sûr que l'utilisation de XRUNAS soit bien approprié en terme de sécurité.

    Sinon, je ne comprends pas ton besoin ...
    Si ton script est placé dans la GPO, au démarrage de l'ordinateur, il s'éxecutera avec le compte SYSTEM qui est déjà administrateur local, non ?
    ______
    Cachlab

  3. #3
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour,

    Si c'est une GPO de type Ordinateur, elle est effectivement lancée avec des droits de type administrateur (avec le compte System je crois, mais pas sûr à vérifier... ).

    Par contre si c'est une GPO de type Utilisateur, là effectivement elle est lancée avec le compte de l'utilisateur et donc n'a pas forcément les droits d'administration nécessaires.

    Le mieux, comme le dit Cachlab, est de ne pas mettre de mots de passe dans des scripts de sysvol (logonscript ou GPO) car ils sont accessibles par tout le monde. Donc la GPO de type Ordinateur parait plus appropriée, car elle ne nécessite pas de spécifier de droits d'accès à la machine.

    Par contre, si ton logiciel se trouve sur un chemin réseau, ce qui à priori ton cas, le compte local exécutant le script de GPO n'a peut-être pas les droits nécessaires pour y accéder...

    Dans ce cas tu peux potentiellement mettre un accès en lecture seule pour tout le monde sur le dossier d'installation, ou placer un mot de passe dans ton script

    Si au final c'est ce que tu veux faire, le Xrunas de JC Bellamy devrait faire l'affaire. As-tu essayer de lancer ton programme avec runas dans une fenêtre de commande? Le script Xrunas utilise cette commande puis envoie un le mot de passe avec SendKeys.
    Si cela fonctionne avec la ligne de commande, cela devrait fonctionner avec Xrunas.

    Autre proposition si tu veux laisser les mots de passe dans ton script sysvol :
    - psexec, outil de sysinternals, qui permet de lancer un programme avec un autre compte utilisateur.
    - Avec AutoIt (autre langage de script contenant une fonction runas) te permettant de compiler ton script en un exe, ce qui rend ton code (ainsi que ton mot de passe) non visible aux utilisateurs curieux (mais pas irrécupérable pour les plus aguerris).

    Bonne continuation

  4. #4
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2010
    Messages : 12
    Par défaut
    Hello,

    Merci à vous deux pour vos réponse.

    Concernant le mot de passe en clair dans le .vbs, ce n'est pas le seul script à en contenir et ça ne semble déranger aucun de mes responsables....

    Je vous confirme que c'est une GPO ordinateur et non user.
    Je fais l'essai actuellement avec un chemin réseau où tout le monde est autorisé en lecture / écriture (modifié éventuellement en lecture seule une fois que tout fonctionnera).

    Le script se lance bien, mes msgbox de test sont bien visibles par dessus la fenêtre demandant de faite ctrl+alt+suppr.

    J'avais un scrip de départ avec un run tout simple sans info d'identification: Il fonctionnait en GPO user (a condition que l'user qui ouvre sa session soit admin local, logique) en revanche il ne fonctionnais pas en GPO ordinateur. D'où mon envie de lancer mon script via un XRUNAS (peut-etre que ne procède pas correctement ?)

    J'ai également fait un essai au préalable en utilisant runas puis un sendkeys après une pause (astuce trouvée sur le net), mais, comme le script se lance au démarrage de l'ordinateur qui attend un ctrl+alt+suppr, il affiche un message d'erreur expliquant comment bien faire la combinaison de ces 3 touches.....

    Comme vous avez pu vous en douter, il s'agit de mon premier script VBS


  5. #5
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Salut !

    A mon avis, si ton script ne fonctionne pas en GPO ordinateur, c'est un souci d'accès à la ressource réseau "\\serveur\Symantec\MSI Installer 11.0.7101.89\Symantec AntiVirus.msi"
    A ta place, j'essayerais simplement en mappant temporairement la ressource.

    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
    Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set WSHNetwork = CreateObject("WScript.Network")
     
    Sources = "\\serveur\Symantec\MSI Installer 11.0.7101.89"
    Install = "Symantec AntiVirus.msi"
    Lecteur = "Z:"
     
    if oFSO.DriveExists(Lecteur) Then WSHNetwork.RemoveNetworkDrive(Lecteur)
    WSHNetwork.MapNetworkDrive Lecteur, Sources
    [...]
    'Ajoute ton code de test
    WSHShell.run Lecteur & "\" & Install, 1, True
    [...]
    WSCript.Sleep 30000
    if oFSO.DriveExists(Lecteur) Then WSHNetwork.RemoveNetworkDrive(Lecteur)
    WScript.Quit
    ++

  6. #6
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour,

    Si ton partage réseau a des accès en lecture pour tout le monde, alors la GPO ordinateur devrait pouvoir y accéder. (Attention : "Tout le monde" est différent de "Utilisateurs du domaine" --> le compte local System n'est pas utilisateur de domaine mais est inclu dans "Tout le monde").

    Je pense qu'il faudrait mieux comprendre d'où vient réellement le problème avant d'essayer de le contourner de cette manière : as-tu mis en place une gestion d'erreur te permettant de tracer dans un fichier de log ce qui ne fonctionne pas ?

    Après si tu continues à vouloir mettre un login/password pour y accéder, je pense que le XRunas ne fonctionnera pas en GPO Ordinateur car le script n'est pas lancé dans une session utilisateur "normale" (graphique) et donc le SendKeys ne peut pas envoyer le mot de passe dans une fenêtre qui n'est pas réellement ouverte.
    Comme je t'ai dit précédemment, penche toi alors vers psexec qui lui ne nécessite pas de session graphique pour fonctionner.

    Bonne continuation

  7. #7
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2010
    Messages : 12
    Par défaut
    Bonjour,

    Merci pour vos réponses.
    Je suis en déplacement pour la fin de semaine.
    Je testerais avec un map réseau en vérifierais les paramètres du partage à mon retour.
    Je vous tiens au courant.

    Bonne fin de semaine et bon week-end

  8. #8
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2010
    Messages : 12
    Par défaut
    bonsoir,

    @ Cachlab:
    J'ai testé ce que tu m'as dit avec le code suivant:
    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
    Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set WSHNetwork = CreateObject("WScript.Network")
     
    Sources = "\\serveur\Symantec\MSI Installer 11.0.7101.89"
    Install = "Symantec AntiVirus.msi"
    Lecteur = "O:"
     
    if oFSO.DriveExists(Lecteur) Then WSHNetwork.RemoveNetworkDrive(Lecteur)
    WSCript.Sleep 3000
    WSHNetwork.MapNetworkDrive Lecteur, Sources
    '[...]
    'Ajoute ton code de test
    WSCript.Sleep 3000
    WSHShell.run Lecteur & "\" & Install, 1, True
    '[...]
    WSCript.Sleep 3000
    if oFSO.DriveExists(Lecteur) Then WSHNetwork.RemoveNetworkDrive(Lecteur)
    WScript.Quit
    Le lecteur réseau se monte correctement, le fichierSymantec AntiVirus.msi est bien présent mais la ligne 15 renvoie un erreur: le fichier spécifié est introuvable.

    @ pitchalov:
    J'ai vérifié le partage, le groupe "Tout le monde" dispose du droit "Controle total" sur le partage.
    Je n'ai aucune gestion des erreurs, aucun fichier log. Peux-tu m'aiguiller pour en mettre un en place STP
    Concernant le couple User/Pwd en clair dans le script, je ne tient pas a tout prix à ce qu'ils y soient.
    Ils y sont car je pensait à un problème de droit d'acces au fichier ou de droit sur le PC mais il semble que non. Donc si ils peuvent virer, c'est avec plaisir !

    Que pensez vous de tout ça ? ....

  9. #9
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Salut Pierrot !

    Le lecteur réseau se monte correctement, le fichierSymantec AntiVirus.msi est bien présent mais la ligne 15 renvoie un erreur: le fichier spécifié est introuvable.
    Peut-être un souci avec l'espace dans le nom du fichier msi ...
    Renomme-le en "Symantec_Antivirus.msi" ou essaye de rajouter des guillemets.
    Genre :
    Ligne 15
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSHShell.run """ & Lecteur & "\" & Install & """, 1, True
    Tu peux aussi essayer le code suivant :
    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
    Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set WSHNetwork = CreateObject("WScript.Network")
     
    Sources = "\\serveur\Symantec\MSI Installer 11.0.7101.89"
    Install = "O:\Symantec AntiVirus.msi"
    Lecteur = left(Install, 2)
     
    if oFSO.DriveExists(Lecteur) Then WSHNetwork.RemoveNetworkDrive(Lecteur)
    WSCript.Sleep 3000
    WSHNetwork.MapNetworkDrive Lecteur, Sources
    '[...]
    'Ajoute ton code de test
    WSCript.Sleep 3000
    WSHShell.run Install, 1, True
    '[...]
    WSCript.Sleep 3000
    if oFSO.DriveExists(Lecteur) Then WSHNetwork.RemoveNetworkDrive(Lecteur)
    WScript.Quit

  10. #10
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour,

    Pour écrire dans un fichier de log, regarde dans la FAQ VBS pour commencer.

    Pour la gestion d'erreur, essaie de tester l'existence du fichier msi avant de le lancer, récupère le code retour de l'exécution de msiexec, et joue avec "On Error Resume Next" et "On Error GoTo 0" et l'objet Err (CF doc vbscript).

    Reviens vers nous si tu te retrouves bloqué dans ton code avec ces nouveaux éléments.

    Pour en revenir à ton problème d'accès, le groupe "Tout le monde" dispose du droit "Controle total" sur le partage --> OK. Mais qu'en est-il des droits NTFS sur le répertoire du partage en question? le groupe "Tout le monde" a-t-il les droits en lecture seule?

    Tu peux déjà faire ce test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Const STR_MSI_FILE_PATH = "\\serveur\Symantec\MSI Installer 11.0.7101.89\Symantec AntiVirus.msi"
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set objLogFile = objFSO.CreateTextFile("c:\log.txt", true)
    If NOT objFSO.FileExists Then 
        objLogFile.WriteLine "Impossible d'accéder au fichier " & STR_MSI_FILE_PATH 
    Else
         objLogFile.WriteLine "Ok pour l'accès au fichier " & STR_MSI_FILE_PATH
    End If
    objLogFile.Close
    Bonne continuation

  11. #11
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2010
    Messages : 12
    Par défaut
    Hello,

    J'ai mis en place la solution du lecteur réseau, ce qui a fait apparait une chose:
    Le script fonctionne parfaitement dans une session ouverte mais renvoie un 'Accès refusé' en GPO quand le script se lance sur la fenetre 'Ctrl Alt Suppr'.

    Verdict: D'après mes collègues, il y aurait des droits (GPO ?) qui rendent les partages innaccessibles aux utilisateurs non authentifiés.

    Mes sources ont été déplacées vers un autre serveur: Tout est OK.
    Le script se lance correctement; l'installation aussi, même sur la fenetre 'Ctrl Alt Suppr'.

    Je vous remerci d'avoir pris du temps pour m'aider.
    Pour un premier script en VBS, je trouve que c'était un bon exercice.

    Je savais que je pouvais compter sur ce forum
    A bientot !

    Pierre

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

Discussions similaires

  1. Exécuter mon programme en tant que service
    Par tonymx15 dans le forum Windows
    Réponses: 3
    Dernier message: 04/12/2010, 12h04
  2. Executer un programme en tant que
    Par poussin_44 dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/08/2007, 09h58
  3. Réponses: 3
    Dernier message: 15/05/2006, 09h49
  4. s'amuser dans la programmation en tant que métier ?
    Par Bruno75 dans le forum Etudes
    Réponses: 9
    Dernier message: 02/02/2006, 21h36
  5. [VB6] Exécuter un programme en tant que...
    Par Le_Tolier dans le forum VB 6 et antérieur
    Réponses: 36
    Dernier message: 28/05/2004, 14h53

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