Page 1 sur 2
[R] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mar. 07 mai 2013 15:41
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
Code : Tout sélectionner
If Not RegRead("HKEY_CURRENT_USER\XXXXXXXXXXXX", "XXXX") <> "" Then
#RequireAdmin
RegWrite("HKEY_CURRENT_USER\XXXXXXXXXXXX", "XXXX", "REG_DWORD", "XXXXX")
Sleep(1000)
ProcessClose("explorer.exe")
ProcessWaitClose("explorer.exe")
Run("explorer.exe")
EndIf
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.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mar. 07 mai 2013 15:42
par jguinch
Salut.
Regardes les fonctions IsAdmin et RunAs.
Évidemment, pour RunAs il faut que tu connaisses le mot de passe...
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mar. 07 mai 2013 15:57
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
Code : Tout sélectionner
If Not RegRead("HKEY_CURRENT_USER\XXXXXXXXXXXX", "XXXX") <> "" Then
RunAs(@UserName, @ComputerName, "MON MOT DE PASSE", 0 , @ComSpec, @SystemDir)
RegWrite("HKEY_CURRENT_USER\XXXXXXXXXXXX", "XXXX", "REG_DWORD", "XXXXX")
Sleep(1000)
ProcessClose("explorer.exe")
ProcessWaitClose("explorer.exe")
Run("explorer.exe")
EndIf
et ça n'a rien donné. La clef ne s'est pas ajoutée dans regedit.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mar. 07 mai 2013 17:43
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.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mar. 07 mai 2013 23:41
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
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mer. 08 mai 2013 11:48
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.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mer. 08 mai 2013 16:51
par Tlem
Verifiez du côté de la commande RunAs !
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mer. 08 mai 2013 16:59
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)
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 09 mai 2013 10:12
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.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 09 mai 2013 10:57
par Tlem
Je pense que votre problème vient d'ici :
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 09 mai 2013 11:17
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")
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 09 mai 2013 11:22
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.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 09 mai 2013 16:16
par Patxi
remplace @SW_HIDE par @SW_SHOW pour voir si tout se passe bien sur cmd.exe
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 09 mai 2013 18:48
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.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 09 mai 2013 20:58
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.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : ven. 10 mai 2013 19:30
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.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : ven. 10 mai 2013 21:43
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
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : dim. 12 mai 2013 11:13
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à.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : dim. 12 mai 2013 19:13
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
- Comportement de l’invite d’élévation pour les administrateurs en mode d’approbation Administrateur :
Cette stratégie vous permet de paramétrer le comportement de la boîte de dialogue lors d'une demande d'élévation de privilèges initiée à partir d'un compte possédant des privilèges d'administrateur.
Il y a trois choix :
Demande de consentement : l’administrateur sera invité à choisir entre Autoriser et Refuser. C'est la valeur par défaut.
Demande d'informations d'identification : l'administrateur sera invité à entre son nom d'utilisateur et son mot de passe.
Élever les privilèges sans demander confirmation : il n'y aura pas de demande de consentement ni d'informations d’identification.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System.
DWORD : ConsentPromptBehaviorAdmin.
Les valeurs possibles sont :
2 : Demande de consentement
1 : Demande d'informations d'identification
0 : Élever les privilèges sans demander confirmation
Procédez simplement à un test de lancement du Registre Windows après avoir paramétré cette stratégie sur le mode Élever les privilèges sans demander confirmation. Elle présente l'avantage d'être beaucoup moins contraignante à mettre en œuvre que celle qui consiste à désactiver le Contrôle des utilisateurs.
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
- Exécuter tous les administrateurs en mode d'approbation d'administrateur :
Cette stratégie détermine le comportement de toutes les stratégies UAC pour la totalité du système. Si elle est activée les sessions de toutes les sessions y compris les sessions d'administrateur sont exécutées en tant qu'utilisateurs standard.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System.
DWORD : EnableLUA.
La valeur par défaut est : Activé.
Une fois que vous avez activé cette stratégie, redémarrez votre machine.
Une boîte de dialogue va vous avertir que vous avez utilisé l'outil Configuration du système pour modifier la manière dont Windows démarre.
Si vous utilisez la commande Exécuter une mention va vous prévenir que cette tâche sera créée avec les autorisations d'administrateur.
Si vous ouvrez le Centre de sécurité de Windows une mention vous avertira que le Contrôle du compte utilisateur est désactivé.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : mer. 15 mai 2013 19:17
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.