Comment puis-je désactiver le compte Invité sur un ordinateur ?

S'il vous plaît Monsieur Script...

S'il vous plaît Monsieur Script...

Bienvenue dans cette section TechNet, dans laquelle le Monsieur Script de Microsoft répond aux questions récurrentes sur les scripts d'administration système. Vous avez une question sur les scripts d'administration système ?

Question du jour : comment puis-je désactiver le compte Invité sur un ordinateur ?

Comment puis-je désactiver le compte Invité sur un ordinateur ?Comment puis-je désactiver le compte Invité sur un ordinateur ?

S'il vous plaît Monsieur Script... Comment puis-je déterminer si le compte Invité est activé ou non sur un ordinateur et, le cas échéant, le désactiver ?

-- PR

Bonjour PR. Enfin une question qui entraîne une réponse simple et directe. Ceci dit, la tâche n'en est pas pour autant négligeable. Il est, en effet, généralement recommandé de désactiver le compte Invité sur vos ordinateurs. C'est juste qu'il est agréable de se voir poser une question qui ne nécessite pas de tergiversations.

Commençons par déterminer si le compte Invité est activé ou non sur un ordinateur. Pour cela, il nous suffit de nous lier au compte, puis de vérifier la valeur de la propriété AccountDisabled. Cela vous semble difficile ? En fait, ça ne l'est pas vraiment :

strComputer = "atl-ws-01"
Set objUser = GetObject("WinNT://" & strComputer & "/Guest")

Wscript.Echo "Guest account disabled: " & objUser.AccountDisabled

Vous voyez, trois lignes de code suffisent. Nous affectons le nom de l'ordinateur (atl-ws-01) à la variable strComputer, puis nous utilisons ADSI et le Fournisseur WinNT pour nous lier au compte Invité de cet ordinateur. (Remarque : le fournisseur WinNT exige le respect de la casse. Ne tapez pas winnt, par exemple… à moins, bien sûr, que vous ne souhaitiez pas que votre script fonctionne.) Enfin, nous renvoyons un écho de la valeur de la propriété AccountDisabled. Si le compte Invité est désactivé, AccountDisabled possède la valeur True. Sinon, sa valeur est False.

Vous comprenez pourquoi nous aimons ce genre de question ?

Vous devez penser que déterminer si le compte Invité est activé ou non est une chose, mais que le désactiver en est une autre, n'est-ce pas ? Vous vous inquiétez de savoir si ça va être difficile ? Pour être honnête, c'est effectivement plus compliqué. Enfin, cela nécessite juste quatre lignes de code au lieu de trois :

strComputer = "atl-ws-01"
Set objUser = GetObject("WinNT://" & strComputer & "/Guest")

objUser.AccountDisabled = True
objUser.SetInfo

Comme vous pouvez le voir, nous nous lions au compte Invité et définissons la valeur de AccountDisabled sur True. Nous appelons ensuite la méthode SetInfo pour appliquer cette modification au compte et ainsi le désactiver.

C'est tout. Pour vérifier la valeur du compte et désactiver ce dernier en une étape, il vous suffit d'associer les deux scripts comme suit :

strComputer = "atl-ws-01"
Set objUser = GetObject("WinNT://" & strComputer & "/Guest")

Wscript.Echo "Guest account disabled: " & objUser.AccountDisabled

objUser.AccountDisabled = True
objUser.SetInfo

Notez qu'aucune erreur n'est générée si vous tentez de désactiver un compte déjà désactivé. En fait, nous renvoyons un écho de l'état du compte en cours, puis le désactivons. Si le compte est déjà désactivé, le script prend fin sans erreur.

Pour en savoir plus

Consultez les archives de S'il vous plaît Monsieur Script... (site en anglais)