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
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
C'est le nombre d'arguments utilisés; c'est la même chose que If WScript.Arguments.Count =0 ThenQue signifie If WScript.Arguments.length =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
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
Cela veut dire que s'il n'y a pas de limitation de privilèges, on lance le programme en tant qu'utilisateur actuel.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
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
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
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
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
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
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
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.J'ai loupé quelque chose?
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
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
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)
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
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
Partager