Page 1 sur 1

[R] SW_HIDE et clés de registre

Posté : ven. 22 janv. 2010 21:11
par 17Cx
Bonsoir les membres,

Comme le titre le laisse penser (ou pas), deux soucis se dressent devant moi.

Le premier concerne " @SW_HIDE "
Je m'explique,

J'entre ceci dans un fichier .au3:

Code : Tout sélectionner

RunWait(@Comspec & " /C Dir /a/b %Windir% >Windir.txt ")
Le fichier contient ce que je veux ( à savoir un listing des fichiers/dossiers présents dans %windir% ) mais l'invité de commande apparait.
Je ne voudrais pas qu'il apparaisse, alors j'ai rajouté cette macro: @SW_HIDE

Ce qui me donne:

Code : Tout sélectionner

RunWait(@Comspec & " /C Dir /a/b %Windir% >Windir.txt ", @SW_HIDE)
Le problème étant que, effectivement l'invité de commande n'apparait pas, mais le fichier Windir.txt n'apparait pas non plus !

Comprend pas là .. :roll:

===============================================

Mon deuxième problème concernant un soucis ( je suppose ) au niveau des droits d'accès sur une clé.

Je souhaiterais tester l'existence d'une clé de registre, j'utilise donc la fonction RegRead()

Exemple:

Code : Tout sélectionner

If RegRead(HKLM\Software\microsoft, "") Then ....
Le code suivant "then" est executé, no prob.

Par contre avec ce genre de clés spéciales:

HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VBOXUSBMON

Pas moyen de tester leur existence ou non.. :/

Quelqu'un aurait il une explication ? un problème de droit d'accès peut-être ?


Merci d'avance à ceux qui répondront.
++

Re: [..] SW_HIDE et clés de registre

Posté : sam. 23 janv. 2010 00:44
par Tlem
Pour la première question, vous oubliez le paramètre "Workdir" dans votre commande.

Pour la deuxième question, après quelques tests, il semble qu'il y ait un bug dans la commande (ne fonctionne pas non plus chez moi avec la 3.3.2.0).
Vous devriez exposer le problème ici : http://www.autoitscript.com/trac/autoit/newticket

Re: [..] SW_HIDE et clés de registre

Posté : sam. 23 janv. 2010 09:37
par 17Cx
Hello,
Pour la première question, vous oubliez le paramètre "Workdir" dans votre commande.
Ah euh oui .. en effet :oops:

Je vais exposer mon problème avec le lien que vous m'avez donné.

Merci de votre aide

++

Re: [..] SW_HIDE et clés de registre

Posté : dim. 24 janv. 2010 00:40
par 17Cx
Hello
* status changed from new to closed
* resolution set to No Bug
Pas de bug apparemment ..
Mouarf.

Re: [..] SW_HIDE et clés de registre

Posté : dim. 24 janv. 2010 11:04
par Tlem
Dans ce cas cela mérite une explication ...
Il vaut peut être mieux la demander dans le forum général du site Anglais. ;)

Re: [..] SW_HIDE et clés de registre

Posté : dim. 24 janv. 2010 17:56
par 17Cx
Hello,

Je pense que c'est ce que je vais faire :roll:

++

Re: [..] SW_HIDE et clés de registre

Posté : dim. 24 janv. 2010 19:25
par Tlem
Je viens de regarder de nouveau et à première vue, il semble que si la valeur par défaut d'une clé de base de registre n'est pas définie, alors la clé ne peut être parfois ouverte et donc @error est initialisé.
Si vous regardez dans la doc, vous pouvez constater qu'en l'occurrence pour la clé de registre HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VBOXUSBMON, @error vous retournera la valeur -1 qui signifie que la valeur ne peut être ouverte, mais pas que la clé n'existe pas. ;)

Je pense donc qu'il faut simplement s'adapter au mode de fonctionnement de RegRead(). :mrgreen:

Re: [..] SW_HIDE et clés de registre

Posté : dim. 24 janv. 2010 20:49
par 17Cx
Re,

En effet, j'en vient à la même conclusion.

Sur un clé qui n'existe pas, la macro @Error est égale à 1
1 if unable to open requested key
On pourrais en déduire que si @Error est égal à 1, alors la clé n'existe pas. Toute autre valeur d'@Error signifierais que la clé existe.

Enfin je synthétise mais c'est les flags d'@Error 1 et 2 sont assez improbables.

Au pire je peut utiliser Reg.exe via une ligne de commande mais ça serait dommage :|

EDIT: Ahh apparemment ça fonctionne ! Je me suis fait une petite fonction

Code : Tout sélectionner

#cs
===================================================================================================================
        Fonction _RegExists()
        $1: KeyName
#ce

Func _RegExists($1)
    RegRead($1, "")
    If @Error <> 1 Then
        Return 1
    EndIf
EndFunc
Dans le code ça donne ça:

Code : Tout sélectionner

If _RegExists("HKLM\software\Classes") then ...
*Heureux*

Re: [..] SW_HIDE et clés de registre

Posté : dim. 24 janv. 2010 21:56
par Tlem
Image

Pensez à mettre votre sujet en [R] ;)