[..] Base de registre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
mickael1er
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 29 déc. 2010 11:36
Status : Hors ligne

[..] Base de registre

#1

Message par mickael1er »

Bonjour,

j'ai un souci avec une modification que je souhaite apporté dans la base de registre pour activé au démarrage de XP le pavé numérique,
j'utilise cette commande pour passé en admin car sinon en utilisateur "normal" cela ne fonctionne pas.

Code : Tout sélectionner

runas("administrateur","toto","petitbateau",1,RegWrite("HKEY_USERS\.DEFAULT\Control Panel\Keyboard","InitialKeyboardIndicators","REG_SZ","2"))
et même avec cette commande la valeur de la variable ne change pas...
Pour réussir à la changer je suis obligé de faire executer en mode admin un fichier .bat qui me lance un .reg et la ça fonctionne.

help
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [...] base de registre

#2

Message par SagePourpre »

RunAs sert à exécuter un programme, pas une fonction.

Rajoute plutôt ceci à la place en début de script

Code : Tout sélectionner

#RequireAdmin
De cette façon, il sera exigé de l'utilisateur, si tel n'est pas le cas, de faire fonctionner ce programme avec
les droits d'administrateurs...
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
mickael1er
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 29 déc. 2010 11:36
Status : Hors ligne

Re: [...] base de registre

#3

Message par mickael1er »

merci de la réponse mais comment forcer a passer en mode admin avec cette commande de façon automatique ??
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [...] base de registre

#4

Message par SagePourpre »

Quelque chose comme :

Code : Tout sélectionner

If EnvGet('Admin') = 'yupyup' Then
    RegWrite("HKEY_USERS\.DEFAULT\Control Panel\Keyboard","InitialKeyboardIndicators","REG_SZ","2")
Else
    EnvSet('Admin','yupyup')
    runas("administrateur","toto","petitbateau",1,@ScriptFullPath) ; doit être compilé pour fonctionner
EndIf
 
devrait faire le travail.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
mickael1er
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 29 déc. 2010 11:36
Status : Hors ligne

Re: [...] base de registre

#5

Message par mickael1er »

heu la je comprend pas tout a quoi correspond "yupyup" et @SciptFullPath

??
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [...] base de registre

#6

Message par Jerome »

Coucou,


Yupyup est le nom de ton admin (a remplacer hein ...) et @SciptFullPath, et bien, je vous laisse tester et chercher dans la doc, mais c'est plutôt explicite :)





Jérôme
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [...] base de registre

#7

Message par SagePourpre »

Jerome a écrit :Coucou,
Yupyup est le nom de ton admin (a remplacer hein ...)
Jérôme
Non, pas du tout, "yupyup" est le contenu de la variable Admin ( Le nom "Admin" ici est arbitraire et
sans importance aucune outre pour faciliter la compréhension humaine de par une nomenclature
sans équivoque ).


EnvSet et EnvGet permettent de définir et de récupérer des
variables d'environnements.

Une variable d'environnement, c'est comme une variable régulière, à l'exception du
fait qu'elle est accessible par tous les programmes qu'autoit démarre à l'aide d'une
des fonctions run.


Voici mon exemple annoté
SagePourpre a écrit :

Code : Tout sélectionner

If EnvGet('Admin') = 'yupyup' Then     ; On vérifie la valeur d'environnement Admin 
    RegWrite("HKEY_USERS\.DEFAULT\Control Panel\Keyboard","InitialKeyboardIndicators","REG_SZ","2")
Else
    EnvSet('Admin','yupyup') ; Si la variable Admin n'était pas égale à yupyup, on donne la valeur yupyup à notre variable ) 
    runas("administrateur","toto","petitbateau",1,@ScriptFullPath) ; doit être compilé pour fonctionner
EndIf
 
En gros, ce script est exécuté deux fois une à la suite de l'autre.

La première fois,

Envget('Admin') est égal à "" puisque elle n'a pas été définie...
Par conséquent, mon If nous envoie à
EnvSet, qui assigne la chaîne de caractère yupyup à la variable d'environnement "Admin"
Ensuite, le script est relancé en tant qu'administrateur à l'aide de RunAs
Comme il n'y a plus d'instructions, cette première exécution de script se termine et le processus est fermé.
MAIS....

Le script a été relancé grâce à RunAs, cette fois en tant qu'administrateur.
C'est là qu'arrive l'utilité de la variable d'environnement.
Elle a été définie dans la première exécution du script et automatiquement "passée" à la deuxième
exécution du script par l'entremise de la fonction Run/RunAs/RunWait.

Par conséquent, lorsque ce deuxième processus vérifie la variable d'environnement "Admin", il a comme
réponse le contenu qui y a été placé la première fois, c'est-à-dire "yupyup" dans ce cas précis.
Le script effectue donc l'action correspondante et écrit la valeur dans la base de registre.

J'ai donc utilisé une variable d'environnement (qui aurait plus s'appeler "Pigeon" au lieu d' "Admin" ) comme méthode
pour indiquer à mon script qu'il exécutait ce script avec les privilèges nécessaires pour écrire dans le registre.

Et pour @scriptfullpath, c'est le chemin complet du script.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [...] base de registre

#8

Message par pop45 »

ou tout simplement

Code : Tout sélectionner

$UserName = "admin" ; a remplace par le nom de compte administrateur
$Password = "password"; a remplace par le mot de passe du compte administrateur

if IsAdmin () Then ; regarde si il a les droit administrateurs
    RegWrite("HKEY_USERS\.DEFAULT\Control Panel\Keyboard","InitialKeyboardIndicators","REG_SZ","2");si oui, il effectue le RegWrite
Else ; sinon
    runas($Username,@computername,$password,1,@ScriptFullPath) ;il se relance avec le compte de l'administrateur
EndIf
 
Lui je suis sur qu'il marche

Sagepourpre, j'ai tester ton script, mais il ne marchait pas, et il ne faisait que de se relancer a chaque fois
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [...] base de registre

#9

Message par SagePourpre »

Ah...

IsAdmin...

Effectivement, avec une fonction tout cuit déjà existante, c'est encore plus simple.


Pour ce qui est de la non-fonctionnalité de mon script, il est possible que ça soit dû à RunAs...
Dans l'aide, il est spécifié que les variables d'environnements sont passées si le script
est exécuté à partir de Run ou RunWait...

J'ai pris pour acquis que ça fonctionnerait avec RunAs mais ça m'apprendra...



P.s. : Noublie pas de modifier la balise de ton premier message pour [R] pour signifier que
ton problème est résolu
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Répondre