Page 2 sur 2
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 18 mai 2013 10:08
par Utilisateur 4989 supprimé
Je viens de tester tes codes. J'ai d'abord fais ça :
Code : Tout sélectionner
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\" ,"ConsentPromptBehaviorAdmin","REG_DWORD","0")
puis ça :
Code : Tout sélectionner
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDrives", "REG_DWORD", 0x00100010)
Ça a bien ajouter la première clef, mais pas la seconde.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 18 mai 2013 10:55
par Uranium
Normal tu n'as pas lu ce que j'ai copier-coller
Cette ligne de code "désactive" le prompt de l'UAC qui demande les droits administrateurs.
Essaye de lancer le regedit normalement , un prompt apparait ( normalement ) puis lance ce code et le prompt 'apparaitra plus ( une fois seulement , la première pour avoir les privilèges de le désactiver )
#RequireAdmin
MsgBox(0,"",IsAdmin())
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\" ,"ConsentPromptBehaviorAdmin","REG_DWORD","0")
RunWait(@WindowsDir & "\regedit.exe", @WindowsDir, @SW_MAXIMIZE)
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 18 mai 2013 11:05
par Utilisateur 4989 supprimé
Bien sûr que j'ai lu ce que t'as écrit, mais j'avais pas compris.
Là maintenant j'ai compris.
Et si j'utilise :
Code : Tout sélectionner
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\" ,"EnableLUA","REG_DWORD","0")
le "Contrôle de compte d'utilisateur" n'apparaîtra plus jamais ? Si j'ai bien compris.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 18 mai 2013 11:24
par ani
Salut vla,
Pour l'uac teste et relis bien ce qu'il est noté plus haut

pour la deuxième clé NoDrives (cacher le lecteur), tu veux cacher quel lecteur ?
voir ici pour plus d'info :
http://technet.microsoft.com/en-us/libr ... 38267.aspx
on peut donner la valeur hexadecimal ou décimal
lecteur Hexadécimal Decimal
...A.........0x1.................1
...B.........0x2.................2
...C.........0x4.................4
...D.........0x8.................8
...E.........0x10...............16
...F.........0x20...............32
Tous.......0x03FFFFFF......67108863
Aucun.....0x0..................0
la valeur hex = 0x00100010 correspond al valeur décimal = 1048592
~> 1048576 (lettre U) il reste 16 (lettre E)
Teste avec cette valeur 0x100010 ou avec cette valeur 1048592 (à mettre entre guillemet)
Il faut un redemarre me semble.
bonne continuation

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 18 mai 2013 11:28
par Utilisateur 4989 supprimé
Je veux cacher les lettres U et E. Pourquoi changer la valeur, ça marche très bien : U et E sont bien cachés et quand je tape U:\ et E:\ je peux y accéder. C'est exactement ce que je veux.
Le problème c'est juste pour ajouter cette clef dans regedit.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 18 mai 2013 14:25
par ani
Ok, peut-être parce que tu regarde dans HKL(ocal)M(achine) au lieu de HKC(urrent)U(ser), Non ?
Nodrives en LocalMachine (meme l'admin ne voit pas les disques)
et pour CurrentUser(seul l'utilisateur ne verra pas les disque, sauf si il se trouve dans le groupe admin)
Sinon la on ne voit pas

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 18 mai 2013 16:48
par jguinch
Petit rappel pour vla qui utilise un Windows 64 bits :
Quand on fait un regwrite dans HKEY_LOCAL_MACHINE\SOFTWARE en 32 bits, on écrit dans HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : dim. 19 mai 2013 11:07
par Utilisateur 4989 supprimé
ani : je regardais bien dans HKCU, et il n'y a pas le clef.
Actuellement, je n'ai qu'une seule session dans mon ordi. U et E sont donc cachés qu'on soit admin ou pas, ce qui me convient. Mon ordi peut à tout moment être utiliser par d'autres personnes, et j'ai des données personnelles dans ces lecteurs. Les autres personnes ne connaissant pas l'existence de ces lecteurs et leurs lettres affectées, cette solution me convient parfaitement.
jguinchard : donc c'est ça qu'il faut faire :
Code : Tout sélectionner
cmd("REG ADD HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Policies\Explorer /V NoDrives /T REG_DWORD /D 0x00100010", "NOM_UTILISATEUR", "MOT_DE_PASSE")
Func cmd($cmd,$compte,$mdp)
RunAsWait($compte,"",$mdp,0,@ComSpec & " /c " & $cmd,"",@SW_HIDE)
EndFunc
?
Parce que ça n'a pas mieux marché.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : lun. 17 juin 2013 13:18
par Utilisateur 4989 supprimé
Pas d'idée ?
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : lun. 17 juin 2013 20:24
par Lhil
Bonjour ,
vla a écrit :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
[...]
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é.
j'ai un petit doute dans la compréhension de votre problème notamment en ce qui concerne l'apparition de la fenêtre "Contrôle de compte d'Utilisateur". Souhaitez-vous qu'elle n'apparaisse que si nécessaire (pour l'opération à effectuer en Admin) mais pas pour le reste du script ou qu'elle n'apparaisse pas du tout ?
Pour le premier cas, ayant été confronté à un problème qui me semble très proche (Script par défaut qui n'a pas besoin des droits admin mais dont certaines fonctions nécessitaient de passer en admin) je l'ai contourné avec le code suivant (ici grossièrement résumé et plus ou moins adapté à votre cas):
Code : Tout sélectionner
if $CmdLineRaw = "/AsAdmin" Then
f1()
Else
check()
EndIf
Func check()
If Not RegRead("HKEY_CURRENT_USER\XXXXXXXXXXXX", "XXXX") <> "" Then
MsgBox(0,"check","Je me relance en admin")
ShellExecute(@ScriptName,"/AsAdmin",@ScriptDir,"runas")
EndIf
EndFunc
Func f1()
MsgBox(0, "f1", "Admin ?: " & IsAdmin())
;~ RegWrite("HKEY_CURRENT_USER\XXXXXXXXXXXX", "XXXX", "REG_DWORD", "XXXXX")
;~ Sleep(1000)
;~ ProcessClose("explorer.exe")
;~ ProcessWaitClose("explorer.exe")
;~ Run("explorer.exe")
Exit
EndFunc
(Code principal de votre fonction volontairement dé-commenté pour les tests)
la fenêtre "Contrôle de compte d'Utilisateur" apparaitra quand même mais uniquement pour exécuter f1() .
J'ai peut-être mal compris ce que vous cherchiez à faire mais dans le doute...
À noter que la présence du @ScriptName
peut être est pénible pour l'utilisation de l'exécution à la volée du script (F5). Donc passer par la compilation puis exécution manuelle du script.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 20 juin 2013 15:21
par Utilisateur 4989 supprimé
Lhil a écrit :Souhaitez-vous qu'elle n'apparaisse que si nécessaire (pour l'opération à effectuer en Admin) mais pas pour le reste du script ou qu'elle n'apparaisse pas du tout ?
Merci pour ton code, mais je souhaiterai que ça n'apparaisse pas du tout.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : jeu. 20 juin 2013 17:02
par TopXm
Hello
vla a écrit :Merci pour ton code, mais je souhaiterai que ça n'apparaisse pas du tout.
Il y a aussi une solution
un peu tordue pour éviter
le prompt de l'UAC, ça consiste à lancer l'EXE via une tâche planifiée en indiquant
qu'on lance l'EXE avec les autorisations maximales
► Afficher le texteCapture du Scheduler
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 22 juin 2013 10:28
par Utilisateur 4989 supprimé
Merci beaucoup TopXm, ça marche super bien.
J'ai donc réduit le code de Lhil a ça :
Code : Tout sélectionner
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDrives", "REG_DWORD", 0x00100010)
Sleep(1000)
ProcessClose("explorer.exe")
ProcessWaitClose("explorer.exe")
Run("OpenOffice.exe")
Il n'y a plus besoin de mettre les droits d'administrateurs puisqu'en cochant la croix dans la planification des tâches, ça donne les droits. La clef se rajoute bien dans regedit.
Le seul bémol, quand le code arrête le processus explorer et le redémarre, le code qui suit ne marche plus : tout ce qui est avant le code mis dans ce message marche, mais tout ce qui est après ne marche pas, il arrête de s'exécuter.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 22 juin 2013 10:38
par TopXm
Hello
Essaies un truc, car je sais que j'avais eu le souci avec un EXE en Tray à lancer au boot, en fait je n'avais pas l'icône dans le Systray alors pourtant qu'il s'exécutait.
en fait c'était tout bête, la tâche planifiée se lançait avant l'explorer ...
Du coup ça se trouve explorer.exe ne tourne pas et tu n'auras
peut-être pas à le stopper / démarrer.
Bon je ne te le promet pas hein, mais ça se tente
EDIT : A tenter aussi de lancer OpenOffice avec le chemin complet
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 22 juin 2013 11:46
par Utilisateur 4989 supprimé
J'ai mis de lancer le script à l'ouverture de session sans :
Code : Tout sélectionner
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDrives", "REG_DWORD", 0x00100010)
Sleep(1000)
ProcessClose("explorer.exe")
ProcessWaitClose("explorer.exe")
Run("OpenOffice.exe")
mais avec :
Code : Tout sélectionner
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDrives", "REG_DWORD", 0x00100010)
La clef s'est bien ajouté mais le menu démarrer ne marchait plus : impossible de cliquer sur quoi que ce soit. J'ai redémarré l'ordi par le gestionnaire des tâches puis quand je suis rentré dans ma session, j'ai fermé le script dès son lancement et le problème a disparu.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 22 juin 2013 11:48
par TopXm
Re
vla a écrit : J'ai redémarré l'ordi puis fermer le script dès son lancement et le problème a disparu
Donc problème résolu ? Si Oui pense à éditer le titre du 1er message en y ajoutant le
[R] de résolu

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 22 juin 2013 11:50
par Utilisateur 4989 supprimé
Le problème du menu démarrer a disparu, mais d'avoir fermé le script la clef ne s'est pas ajouté.
Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 22 juin 2013 12:16
par TopXm
Désolé je ne pige pas trop, quand je code le RegWrite ça fonctionne sans problème.
Après que tu ne puisses plus cliquer nul part c'est normal tu ne relances pas explorer.exe
Si tu essais ceci ça ne modifie pas la clé ?
► Afficher le texteTest
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=Restart_Explorer.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Local Const $KeyR = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
;ouvre fichier du résultat du RegRead / RegWrite
Local Const $FileOut = FileOpen('Resultat.txt', 2)
; Lecture de la clé &
;Impression du résutat dans fichier log
FileWriteLine($FileOut, $KeyR & " = " & RegRead($KeyR, "NoDrives"))
; Ecriture de la clé
RegWrite($KeyR, "NoDrives", "REG_DWORD", 0x00100010)
;Impression du résutat dans fichier log
FileWriteLine($FileOut, $KeyR & " = " & RegRead($KeyR, "NoDrives"))
FileClose($FileOut)
ShellExecute('Resultat.txt', '', @ScriptDir, 'open')
Exit
Pis je capte pas non plus ton ProcessClose + ProcessWaitClose. Le second devrait suffire

Re: [..] Lancer un script en tant qu'admin sans RequireAdmin
Posté : sam. 22 juin 2013 12:31
par Utilisateur 4989 supprimé
Ton fichier m'a donné ceci :
Code : Tout sélectionner
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer =
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer =
Pas besoin de relancer explorer, je ne l'arrête plus. Je créé un script avec uniquement cette ligne :
Code : Tout sélectionner
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDrives", "REG_DWORD", 0x00100010)
qui se lance à l'ouverture de session grâce au planificateur des tâches, avant qu'explorer se lance.
Et ça marche, la clef est présente dans regedit.
Puis je lance mon script, et tout fonctionne correctement.
Merci pour ton aide.
Sujet résolu.