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
Version imprimable
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 ThenCitation:
Que signifie If WScript.Arguments.length =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):calim2:
Code:
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.Citation:
Par exemple a quoi il sert dans ce code
Code:
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:
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
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
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) :weird: ?
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.
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 :aie: ?
Code:
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.Citation:
J'ai loupé quelque chose :aie: ?
Il faut exécuter tout le code qui permet de lancer un programme(comme celui plus haut)
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:
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:
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
Oups.. personne a une petite idée?