[R] Lancer un script en tant qu'admin sans RequireAdmin

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Utilisateur 4989 supprimé
Status : Hors ligne

[R] Lancer un script en tant qu'admin sans RequireAdmin

#1

Message par Utilisateur 4989 supprimé »

Bonjour,
je souhaiterai que mon script se lance en tant qu'administrateur car il ajoute une clef dans regedit. Il faut donc être administrateur pour le faire.
Je sais qu'une solution existe : #RequireAdmin. Le problème c'est que dès que je lance mon script, la fenêtre "Contrôle de compte d'utilisateur" apparaît à chaque fois même quand le If n'est pas vrai, et ça devient très vite pénible. Voilà mon code :
► Afficher le texte
Comment faire pour lancer un script en tant qu'administrateur sans #RequireAdmin ?
Je précise que je suis administrateur de mon ordi et que je ne souhaite pas réduire les paramètres du "Contrôle de compte d'utilisateur", par mesure de sécurité.
Merci d'avance pour votre aide.
Modifié en dernier par Utilisateur 4989 supprimé le sam. 22 juin 2013 12:31, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#2

Message par jguinch »

Salut.
Regardes les fonctions IsAdmin et RunAs.

Évidemment, pour RunAs il faut que tu connaisses le mot de passe...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#3

Message par Utilisateur 4989 supprimé »

Merci, je vais regarder ces fonctions.
Evidemment que je connais le mot de passe, c'est mon ordi ;)

Edit : pour IsAdmin(), j'ai testé ça :

Code : Tout sélectionner

If IsAdmin() Then
     MsgBox(0, "", "Tous les droits")
Else
     MsgBox(0, "", "Pas tous les droits")
EndIf
et ça a donné : "Pas tous les droits"

Pour RunAs, j'ai fais ça :
► Afficher le texte
et ça n'a rien donné. La clef ne s'est pas ajoutée dans regedit.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#4

Message par Tlem »

Il me semble me rappeler qu'il existe plusieurs sujets traitant de ceci.
Si mes souvenirs sont exacte, l'un d'eux consistait à vérifier si oui ou non on est sur un compte administrateur et en cas de compte limité, de fermer/relancer le script avec les droits qui vont bien.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Patxi
Niveau 1
Niveau 1
Messages : 9
Enregistré le : ven. 02 sept. 2011 08:24
Localisation : Rochefort
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#5

Message par Patxi »

Ton script peut lancer une action en tant qu'admin avec RunAs, je te conseille d'utiliser cette dernière commande pour demander à ton script d'exécuter l'écriture de registre en utilisant l'invité de commande en tant qu'admin:

Code : Tout sélectionner

cmd(REG ADD [emplacement de la nouvelle valeur] /V [nom de la valeur] /T [type de la valeur] /D [données de la valeur],[ton compte admin],[ton mdp admin])

Func cmd($cmd,$compte,$mdp)
   RunAsWait($compte,"",$mdp,0,@ComSpec & " /c " & $cmd,"",@SW_HIDE)
EndFunc
pour plus de détails sur la commande, ouvre cmd et tape reg /? ou reg add /?
En espérant que ça t'aide
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#6

Message par Utilisateur 4989 supprimé »

Tlem a écrit :Il me semble me rappeler qu'il existe plusieurs sujets traitant de ceci.
Si mes souvenirs sont exacte, l'un d'eux consistait à vérifier si oui ou non on est sur un compte administrateur et en cas de compte limité, de fermer/relancer le script avec les droits qui vont bien.
Je sais, j'ai vu le sujet dont vous parlez : http://autoitscript.fr/forum/viewtopic.php?f=6&t=4764
Mais il ne fonctionne pas correctement chez moi car il m'apparaît "Je ne suis pas ADMINISTRATEUR !!!" mais après il ne se relance pas avec les droits d'administrateurs.
Patxi a écrit :Ton script peut lancer une action en tant qu'admin avec RunAs, je te conseille d'utiliser cette dernière commande pour demander à ton script d'exécuter l'écriture de registre en utilisant l'invité de commande en tant qu'admin:

Code : Tout sélectionner

cmd(REG ADD [emplacement de la nouvelle valeur] /V [nom de la valeur] /T [type de la valeur] /D [données de la valeur],[ton compte admin],[ton mdp admin])

Func cmd($cmd,$compte,$mdp)
   RunAsWait($compte,"",$mdp,0,@ComSpec & " /c " & $cmd,"",@SW_HIDE)
EndFunc
pour plus de détails sur la commande, ouvre cmd et tape reg /? ou reg add /?
En espérant que ça t'aide
Merci pour ton code, mais j'ai du faire une erreur quelque part, il ne marche pas. Voilà ce que j'ai fait :

Code : Tout sélectionner

cmd("REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /V NoDrives /T REG_DWORD /D 0x00100000, MON_NOM_D_UTILISATEUR, MON_MOT_DE_PASSE")
Func cmd($cmd,$compte,$mdp)
     RunAsWait($compte,"",$mdp,0,@ComSpec & " /c " & $cmd,"",@SW_HIDE)
EndFunc
Un message d'erreur apparaît : "cmd() called by a previous line with 1 arg(s). Min = 3. First previous line calling this Func is 1" et je ne comprend pas ce que ça veut dire.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#7

Message par Tlem »

Verifiez du côté de la commande RunAs !
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#8

Message par jguinch »

Salut
Tu peux essayer de remplacer RunAsWait($compte,"",$mdp,0,@ComSpec & " /c " & $cmd,"",@SW_HIDE) par
RunAsWait($compte, @ComputerName, $mdp, 0, @ComSpec & " /c " & $cmd, @SystemDir, @SW_HIDE)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#9

Message par Utilisateur 4989 supprimé »

Merci pour ton aide, mais toujours la même erreur :
ERROR: cmd() called by a previous line with 1 arg(s). Min = 3. First previous line calling this Func is 8.
Func cmd($cmd,$compte,$mdp)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
Voilà ce que j'ai essayé :

Code : Tout sélectionner

RunAsWait($compte, @ComputerName, $mdp, 0, @ComSpec & " /c " & $cmd, @SystemDir, @SW_HIDE)
et
RunAs($compte, @ComputerName, $mdp, 0, @ComSpec & " /c " & $cmd, @SystemDir, @SW_HIDE)
Apparemment, le problème ne vient pas de RunAsWait ou RunAs mais de la fonction.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#10

Message par Tlem »

Je pense que votre problème vient d'ici :

Code : Tout sélectionner

@ComSpec & " /c " & $cmd
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Patxi
Niveau 1
Niveau 1
Messages : 9
Enregistré le : ven. 02 sept. 2011 08:24
Localisation : Rochefort
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#11

Message par Patxi »

vla a écrit : Merci pour ton code, mais j'ai du faire une erreur quelque part, il ne marche pas. Voilà ce que j'ai fait :

Code : Tout sélectionner

cmd("REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /V NoDrives /T REG_DWORD /D 0x00100000, MON_NOM_D_UTILISATEUR, MON_MOT_DE_PASSE")
Func cmd($cmd,$compte,$mdp)
     RunAsWait($compte,"",$mdp,0,@ComSpec & " /c " & $cmd,"",@SW_HIDE)
EndFunc
Un message d'erreur apparaît : "cmd() called by a previous line with 1 arg(s). Min = 3. First previous line calling this Func is 1" et je ne comprend pas ce que ça veut dire.
C'est normal que ça ne fonctionne pas, le problème vient de là:

Code : Tout sélectionner

cmd("REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /V NoDrives /T REG_DWORD /D 0x00100000, MON_NOM_D_UTILISATEUR, MON_MOT_DE_PASSE"
La fonction cmd nécessite 3 paramètres, mais tu englobes les 3 entre guillemets: cmd("commande,compte,mdp")
Recommence en séparant bien chaque paramètre: cmd("commande","compte","mdp")
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#12

Message par Utilisateur 4989 supprimé »

J'ai donc fait :

Code : Tout sélectionner

cmd("REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /V NoDrives /T REG_DWORD /D 0x00100000", "MON_NOM_D_UTILISATEUR", "MON_MOT_DE_PASSE")
Func cmd($cmd,$compte,$mdp)
     RunAsWait($compte,"",$mdp,0,@ComSpec & " /c " & $cmd,"",@SW_HIDE)
EndFunc
Il n'y a plus de message d'erreur, mais la clef ne s'est pas rajouté dans regedit.
Avatar du membre
Patxi
Niveau 1
Niveau 1
Messages : 9
Enregistré le : ven. 02 sept. 2011 08:24
Localisation : Rochefort
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#13

Message par Patxi »

remplace @SW_HIDE par @SW_SHOW pour voir si tout se passe bien sur cmd.exe
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#14

Message par Utilisateur 4989 supprimé »

Je viens de le faire, et malheureusement rien ne se passe à l'écran. cmd ne s'ouvre pas.
L'exécution d'uniquement ce code dure entre 2 et 3 secondes, pas plus.
Avatar du membre
Patxi
Niveau 1
Niveau 1
Messages : 9
Enregistré le : ven. 02 sept. 2011 08:24
Localisation : Rochefort
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#15

Message par Patxi »

Ah oui je n'avais pas pensé à ça!
Le seul moyen de vérifier si la commande marche serait donc d'ouvrir le compte admin, puis taper manuellement REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /V NoDrives /T REG_DWORD /D 0x00100000 dans l'invité de commande pour vérifier si la commande est correcte.
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#16

Message par Utilisateur 4989 supprimé »

Je viens de le faire et, bonne nouvelle, ça a mis "L'opération a réussi" et ça a bien ajouter la clef.
Avatar du membre
Patxi
Niveau 1
Niveau 1
Messages : 9
Enregistré le : ven. 02 sept. 2011 08:24
Localisation : Rochefort
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#17

Message par Patxi »

Parfait! si cmd peut le faire, Autoit aussi!
Je te conseille de procéder par étapes à présent:
Tout en restant en compte admin, faire un Run au lieu de Runas avec autoit
Si tout va bien; même test en Runas toujours en compte admin
Si ce dernier test est concluant, alors je ne vois pas pourquoi ça ne fonctionnerai pas avec un autre compte
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#18

Message par Utilisateur 4989 supprimé »

C'est bien ça qu'il fallait faire ?

Code : Tout sélectionner

cmd("REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /V NoDrives /T REG_DWORD /D 0x00100010", "MON_NOM_D_UTILISATEUR", "MON_MOT_DE_PASSE")
Func cmd($cmd,$compte,$mdp)
     Run(@ComSpec & " /c " & $cmd)
EndFunc
parce que ça n'a pas marché. cmd s'est ouvert puis direct refermé, mais la clef ne s'est pas ajoutée.
Je suis bien en compte admin, mais comme dit plus haut je n'ai pas tous les droits du fait que le "Contrôle de compte d'utilisateur" s'ouvre en ouvrant regedit. Le problème doit peut-être venir de là.
Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 13:13
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#19

Message par Uranium »

Si tu veux désactiver le prompt :

Code : Tout sélectionner

RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\" ,"ConsentPromptBehaviorAdmin","REG_DWORD","0")
► Afficher le texte
SI tu veux enlever l'UAC :

Code : Tout sélectionner

RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\" ,"EnableLUA","REG_DWORD","0")
► Afficher le texte
« En mathématiques, “évident” est le mot le plus dangereux. »
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin

#20

Message par Utilisateur 4989 supprimé »

Merci pour tes codes.
Je suis désolé, je vais pas pouvoir les tester tout de suite, je suis très pris en ce moment.
Je te tiens au courant ce week-end.
Répondre