Page 1 sur 1

[R] Lancer script avec droits administrateur

Posté : jeu. 19 févr. 2009 11:11
par jcaspar
B :D onjour à tous !

Je voudrais lancer ce script avec des droits administrateurs . Le script fonctionne mais uniquement si je dispose des droits administrateur ce qui démontre que mon code n'est pas encore opérationelle
J'ai essayé de lancer le script à partir d'un fichier distinct mais le problème est identique .
POurriez vous svp m'aider à résoudre ce soucis ? Le but du script étant de mettre à jour la version du flash player

Merci beaucoup à tous pour votre aide et vos conseils :P

Jean Marc

Code : Tout sélectionner


#NoTrayIcon
#RequireAdmin
Global $sUserName = "admin"
Global $sPassword = "xxxxx"
Global $sDomaine = "domaine"

If NOT IsAdmin() OR IsAdmin ()Then
    RunAsWait($sUserName, $sDomaine, $sPassword, 0, @ScriptFullPath, @ScriptDir)
EndIf

Runwait("NPSWF32_FlashUtil.exe")
sleep(10)
WinWaitActive("Mise à jour de Adobe Flash Player")
;class Button Instance 1
Send ("{ENTER}")
WinWaitActive("Macromedia Flash Player Uninstaller")
Send ("{ENTER}")
sleep(10)
Send ("{ENTER}")
Exit

 

Re: [Lancer script avec droits administrateur]

Posté : jeu. 19 févr. 2009 19:24
par FernandG
Bonsoir,

Avant de te faire "taper" sur les doigts, pense à respecter les règles de présentation d'un post que tu trouveras ici.

Sinon pour répondre à ta question, une partie de ton code n'est pas correct.
Remplace le code suivant :

Code : Tout sélectionner

If NOT IsAdmin() OR IsAdmin ()Then
    RunAsWait($sUserName, $sDomaine, $sPassword, 0, @ScriptFullPath, @ScriptDir)
EndIf

Runwait("NPSWF32_FlashUtil.exe")
Par :

Code : Tout sélectionner

If Not IsAdmin() Then
    RunAsWait($sUserName, $sDomaine, $sPassword, 0, @ScriptDir & "\NPSWF32_FlashUtil.exe", @ScriptDir)
Else
    RunWait(@ScriptDir & "\NPSWF32_FlashUtil.exe", @ScriptDir)
EndIf
Voilà.

Je reviendrai plus tard sur le reste de ton code, pour avis et amélioration.

Bonne soirée.
AutoITement.

Re: [Lancer script avec droits administrateur]

Posté : jeu. 19 févr. 2009 22:14
par FernandG
Re,

Donc, pour revenir au reste de ton code, je te recommande d'éviter d'utiliser les commandes Sleep et Send. Surtout quand je vois ce bout de code :

Code : Tout sélectionner

Send ("{ENTER}")
sleep(10)
Send ("{ENTER}")
En effet, je peux t'assurer que ton installation n'ira pas toujours à terme. Imagine qu'un processus monopolise d'avantage le processeur que le processus du logiciel que tu installes !?!? Tu enverras un Send dans le vide, avant que la fenêtre suivante n'apparaisse. Sans parler que tous les postes ne répondent pas de la même façon. A moins que ton parc soit homogène et encore ...

Je te recommande d'utiliser plutôt les commandes WinWait et ControlClick. Regarde ici mon post et mes explications concernant ces deux commandes.

Maintenant pourquoi simuler une installation d'un logiciel alors que tu peux l'installer de façon automatique, de manière silencieuse ? Tu dis vouloir installer, mettre à jour Flash Player. Alors récupère plutôt la dernière version de Flash Player mais en version "MSI" en cliquant ici. Ensuite, il suffit de lancer l'installation silencieuse à l'aide de msiexec. Regarde toutes les options d'installation avec un msiexec /?.

Avec toutes ces précisions et ajout voilà un exemple de code :
► Afficher le texte
Et si tu veux aucune interaction avec l'utilisateur, supprime la ligne MsgBox.

Voilà, en espérant que cela pourra t'aider.

Bonne soirée, nuit.
AutoITement.

Re: [Lancer script avec droits administrateur]

Posté : jeu. 19 févr. 2009 23:53
par jcaspar
Génial !

Merci beaucoup pour cette aide précieuse qui me permettra de résoudre
beaucoup de scripts en attente !

Je vais tester cela demain matin !

Bonne nuit

Jean Marc

Re: [..] Lancer script avec droits administrateur

Posté : ven. 20 févr. 2009 14:26
par jcaspar
:D Merci encore pour vos réponses !

J'ai une autre question relative au même sujet :
comment lancer un script avec des droits administrateurs
mais sans lancer de script ou d'application uniquement
pour que le script puisse disposer des droits les plus importants
exemple le script suivant.

Merci d'avance pour vos suggestions et idées ! :mrgreen:

Jean Marc

Code : Tout sélectionner

#NoTrayIcon
global $login=admin
global $password=xxxx

;runaswait("$login",@computername,$password,0,@scriptdir)

;copie des fichiers cacert.pem et test.ini
FileCopy("\\serveur\depot$\copie_repertoire", "C:\Program Files\OCS Inventory Agent")
; test existence fichiers et lecture du fichier test.ini
If FileExists("C:\Program Files\OCS Inventory Agent\test.ini ") Then
    $file = ("C:\Program Files\OCS Inventory Agent\test.ini")
    $array = IniReadSection($file, "Ordinateur")
    ;variable nom ordinateur
    $tring = @ComputerName
    ;variable nom utilisateur
    $utilisateur = @UserName
    ;variables date
    $date = @MDAY & @MON & @YEAR
    ;nom des sections
    $name = ("Ordinateur")
    $name1 = ("Utilisateur")
    $name2 = ("Date du jour")
    ;ecriture dans le fichier test.ini
    IniWrite($file, "Nom du PC", $name, $tring);marque dans $file, a la section "Section", a la ligne $name, la valeur $tring.
    IniWrite($file, "Nom utilisateur", $name1, $utilisateur)
    IniWrite($file, "Date de création fichiers", $name2, $date)
;affiche message
MsgBox(64, "MsgBox", "Tout c'est passé correctement.")
    $var = IniReadSection("C:\Program Files\OCS Inventory Agent\test.ini", "Nom utilisateur")
    If @error Then
        MsgBox(48, "Utilisateur ?", "Nom d'utilisateur manquant")
    Else
        For $i = 1 To $var[0][0]
            MsgBox(64, "Ordinateur et utilisateur", "Ordinateur: " & $var[$i][0] & @CRLF & "Utilisateur: " & $var[$i][1])
        Next
    EndIf
Else
    MsgBox(48, "Erreur", "Le fichier test.ini n’existe pas", 10)
EndIf
 ;test existence cacert.pem
If FileExists("C:\Program Files\OCS Inventory Agent\cacert.pem ") Then
    MsgBox(64, "Certificat copié ", "Le certificat a bien été copié", 10)
Else
; si cacert.existe affiche message
    MsgBox(48, "Erreur", "Le fichier cacert.pem n’existe pas", 10)
EndIf
Exit

 

Re: [..] Lancer script avec droits administrateur

Posté : ven. 20 févr. 2009 18:55
par FernandG
Bonsoir,

C'est possible à l'aide d'une d'une petite astuce. Au lancement du programme, test si l'utilisateur possède les droits Administrateur à l'aide de la commande IsAdmin(), sinon tu relances ton programme avec les droits appropriés et tu "Exit" aussitôt.

Exemple :

Code : Tout sélectionner

#NoTrayIcon
Dim $sUserName = "myuser"
Dim $sPassword = "mypass"
Dim $sDomaine = "mydomain"
If Not IsAdmin() Then
    Run($sUserName, $sDomaine, $sPassword, 0, @ScriptFullPath, @ScriptDir)
    Exit
EndIf
.
.
Et tu auras un programme qui se lancera toujours avec les privilèges administrateur.

Voilà.

Bonne soirée.
AutoITement.

Re: [R] Lancer script avec droits administrateur

Posté : sam. 21 févr. 2009 10:33
par Tlem
Le sujet avait déjà été abordé avec la solution.
http://www.autoitscript.fr/forum/viewto ... 8967#p8967

Dommage que l'utilisation du moteur de recherche du forum ne soit pas quelque chose d'évident pour certains !!!

Re: [R] Lancer script avec droits administrateur

Posté : dim. 22 févr. 2009 20:38
par FernandG
Bonsoir,

Oops Tlem, je n'avais pas vu que ce sujet avait été abordé dans un autre post. C'est d'autant plus troublant qu'en regardant le code, il y ressemble beaucoup.

Le code que j'ai posté n'est pas repris d'un quelconque post, je l'utilise assez souvent pour mes programmes systèmes et ce depuis le changement de la commande RunAs.

Sinon, je n'hésite pas à donner un lien vers la source lorsque je sais que le sujet à été abordé et/ou s'y apparentant. Maintenant, je ne peux avoir lu et assimilé l'ensemble des posts de ce forum. Je l'explore de plus en plus mais qu'est-ce qu'il est riche .... J'en découvre chaque jour.

Bonne soirée.
AutoITement.

Re: [R] Lancer script avec droits administrateur

Posté : dim. 22 févr. 2009 21:47
par Tlem
Aucun soucis FernandG, le message ne vous était pas destiné. :wink:
Je vois bien que vous faites partie des membres actif du forum et d'ailleurs, je vous en remercie.

Re: [..] Lancer script avec droits administrateur

Posté : ven. 06 mai 2011 11:29
par marcelino11
FernandG a écrit :Bonsoir,

C'est possible à l'aide d'une d'une petite astuce. Au lancement du programme, test si l'utilisateur possède les droits Administrateur à l'aide de la commande IsAdmin(), sinon tu relances ton programme avec les droits appropriés et tu "Exit" aussitôt.

Exemple :

Code : Tout sélectionner

#NoTrayIcon
Dim $sUserName = "myuser"
Dim $sPassword = "mypass"
Dim $sDomaine = "mydomain"
If Not IsAdmin() Then
    Run($sUserName, $sDomaine, $sPassword, 0, @ScriptFullPath, @ScriptDir)
    Exit
EndIf
.
.
Et tu auras un programme qui se lancera toujours avec les privilèges administrateur.
J'ai recherché et lu pas mal de post, je suis toujours bloqué.

J'ai testé la commande RunAs, mais je n'arrive pas à ce que je veux faire.
Est-ce possible de lancer un script .au3 en tant qu'administrateur avec la commande RunAs ? ou alors peut-on seulement lancer des .exe, .bat,... ?

Merci d'avance de vos réponses

Re: [R] Lancer script avec droits administrateur

Posté : ven. 06 mai 2011 20:56
par Tlem
Vous devriez nettoyer le sable que vous avez dans les yeux et relire les derniers messages de ce sujets !!!

Re: [R] Lancer script avec droits administrateur

Posté : lun. 09 mai 2011 09:57
par marcelino11
Bonjour,

Pour le sable, j'ai essayé SandDelete, mais sans les droits administrateur, je n'ai pas réussi, pour cela que je demande de l'aide.

Désolé de ne pas être un membre actif du forum, j'ai passé plusieurs heures à lire différents sujets sur le forum, j'ai trouvé énormément d'explication qui m'ont permis d'avancer dans mes scripts, mais la je suis bloqué.

J'ai évidemment lu ce sujet là ainsi que le sujet que vous cité un peu plus haut, mais je n'ai pas réussi à faire ce que je voulais, c'est pour cela que je fais appel à des personnes plus expérimentés, maintenant s'il n'est pas possible d'avoir une réponse je trouve ça dommage. Je continuerai à utiliser psexec.