IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

VBS: vérifier si un contrôle utilisateur(UAC) est activé ?


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut VBS: vérifier si un contrôle utilisateur(UAC) est activé ?
    Bonjour

    J'ai deux petites questions:

    1/ Savez vous si en vbs c'est possible de vérifier si un contrôle utilisateur est activé (UAC) ?

    2/ Que signifie If WScript.Arguments.length =0 Then ?

    Cordialement

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Que signifie If WScript.Arguments.length =0 Then ?
    C'est le nombre d'arguments utilisés; c'est la même chose que If WScript.Arguments.Count =0 Then
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    C'est le nombre d'arguments utilisés; c'est la même chose que If WScript.Arguments.Count =0 Then
    Merci mais honnêtement j'ai pas compris a quoi il sert..

    Par exemple a quoi il sert dans ce code (je l'utilise depuis des années sans savoir a quoi il sert)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        If WScript.Arguments.length =0 Then
        Set objShell = CreateObject("Shell.Application")
        objShell.ShellExecute "WScript.exe", Chr(34) & _
        WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
        Else
     
        MsgBox "Ce message est demandé avec une élévation !"
     
        End If

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut Remplacer "UAC dأ©sactivé" par "UAC désactivé"
    Par exemple a quoi il sert dans ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        If WScript.Arguments.length =0 Then
        Set objShell = CreateObject("Shell.Application")
        objShell.ShellExecute "WScript.exe", Chr(34) & _
        WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
        Else
     
        MsgBox "Ce message est demandé avec une élévation !"
     
        End If
    Cela veut dire que s'il n'y a pas de limitation de privilèges, on lance le programme en tant qu'utilisateur actuel.
    Sinon, l'opération ne sera pas acceptée car il faut être en super-Admin pour pouvoir lancer le programme(en l'occurrence Wscript.exe).

    Pour savoir si l'UAC est activé ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
     
    Const Key="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA"
    Dim WS
    Set WS = CreateObject("WScript.Shell")
     If WS.RegRead(Key) = 0 Then
       MsgBox "UAC désactivé"
     ElseIf WS.RegRead(Key) = 1 Then
       MsgBox " UAC activé"
     End If
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Merci pour le code de vérification UAC

    Si j'ai bien compris, si WScript.Arguments.length =0 alors il n' y a pas de limitation de privilèges, par contre si WScript.Arguments.length =1 il y a alors une limitation ?

    Pour récapituler:

    Si WScript.Arguments.length =0 cela concerne les comptes Administrateurs

    Si WScript.Arguments.length =1 cela concerne les comptes Invités

    Merci

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Si WScript.Arguments.length =0 : Pas d'arguments supplémentaire => Comptes utilisateurs(actuels ou peut-être invités)

    Si WScript.Arguments.length =1 : Condition supplémentaire => Comptes Administrateurs
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Donc Si WScript.Arguments.length =0 alors il n'y a pas de limitation de privilèges car c'est un comptes utilisateurs (actuels ou peut-être invités) ?

    Je sent que je me mélange les pinceaux

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Pour plus de détails sur ce sujet, regarde le très bon article UAC(Vista et Win 7) de JBC.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Merci tres interesant, je vois plus clair..

    Je suis Admin de mon PC sous Seven pro et j'ai voulu faire un petit test en créant un compte standard:

    Avec mon compte Admin, le code ci-dessous m'affiche la valeur 0

    Mais avec le compte standard le code m'affiche aussi la valeur 0

    J'ai loupé quelque chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    valeur = WScript.Arguments.length
    MsgBox valeur

  10. #10
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    J'ai loupé quelque chose ?
    En effet oui, car si tu exécutes ces deux lignes indépendamment d'un programme à lancer, tu auras toujours la valeur 0 quel que soit le type de compte sous lequel tu l'exécute car WScript n'est pas lancé ou pas en cours de lancement; donc aucun argument en vue.

    Il faut exécuter tout le code qui permet de lancer un programme(comme celui plus haut)
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Ah ok mais il y a toujour un petit soucis..

    J'ai exécuté le code ci-dessous dans les 2 comptes et voici ce que j'ai:

    Le compte Administrateur: 1
    Le compte Standard: 1


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If WScript.Arguments.length =0 Then
    Set objShell = CreateObject("Shell.Application")
    objShell.ShellExecute "WScript.exe", Chr(34) & _
    WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
    Else
     
    ref = WScript.Arguments.length
    MsgBox ref
     
    End If
    J'ai trouvé un code pour savoir si on est Admin ou pas mais là encore il y un problème.. pourquoi car d’après Bellamy un compte Admin a 2 "jetons" (Administrateur et Standard par défaut)

    Donc si je lance le code ci-dessous alors le résultat je suis pas Admin et pourtant je fais parti du groupe Administrateur.. je comprends bien ce résultat car c'est les compte Standard qui est activé pour question de sécurité..

    Quel est la solution pour savoir si je suis Administrateur meme si le compte Standard est activé?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Set objNetwork = CreateObject("Wscript.Network")
    strComputer = objNetwork.ComputerName
    strUser = objNetwork.UserName
     
    isAdministrateur = false
     
    Set objGroup = GetObject("WinNT://" & strComputer & "/Administrateurs")
    For Each objUser in objGroup.Members
        If objUser.Name = strUser Then
            isAdministrateur = true        
        End If
    Next
     
    If isAdministrator Then
        Wscript.Echo strUser & " est Administrateur."
    Else
        Wscript.Echo strUser & " est pas Administrateur."
    End If

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Oups.. personne a une petite idée?

Discussions similaires

  1. Vérifier qu'un contrôle est accessible ou non dans la page
    Par stroumfs dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2009, 16h55
  2. VBS - vérifier existence utilisateur dans AD
    Par spantemonium dans le forum VBScript
    Réponses: 2
    Dernier message: 17/11/2008, 15h05
  3. [VBS] recherche OU d'un utilisateur dans Active directory
    Par Amandine62 dans le forum VBScript
    Réponses: 7
    Dernier message: 16/02/2006, 08h42
  4. L'utilisateur n'est pas asoocié à une connexion SQLServer...
    Par NotANumber dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/01/2006, 15h27
  5. vérifier si un chemin de destination est correct
    Par philistase dans le forum MFC
    Réponses: 6
    Dernier message: 12/01/2005, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo