Results 1 to 5 of 5

Thread: Using WMI to disable a user account

  1. #1
    Paul Guest

    Using WMI to disable a user account

    Hi,

    I want to use a WMI script to disable a user account. Here's the test code
    I'm using:

    compName = "localhost"
    Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//"& _
    compName & "\root\cimv2")
    Set users = wmi.ExecQuery("SELECT * FROM Win32_UserAccount")
    For Each user In users
    If user.Name = "whatever" Then
    user.Disabled = True
    End If
    Next 'user

    The code runs fine (on a Windows Server 2003 box; I'm logged in as
    Administrator), but the user's account is not disabled. Any idea why?

  2. #2
    Al Dunbar Guest

    Re: Using WMI to disable a user account

    Interesting. I had the same result on XP with a non-admin account, so it's
    not just that you are testing against a name where the (upper/lower) case
    doesn't match. I added some echo statements to make sure the .disabled
    attribute has a boolean value and is modifiable, i.e.:

    compName = "localhost"
    Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//"&
    _
    compName & "\root\cimv2")
    Set users = wmi.ExecQuery("SELECT * FROM Win32_UserAccount")
    For Each user In users
    If user.Name = "zzz" Then
    wscript.echo "disabling user [" & user.name & "]"
    wscript.echo "[" & user.disabled & "]"
    user.Disabled = not user.disabled
    wscript.echo "[" & user.disabled & "]"
    End If
    Next 'user
    wscript.echo "after FOR EACH loop"

    Since this indicated that the attribute had indeed changed (although not on
    the actual account), it seems to me that there might perhaps be some
    requirement to write the property back to the sam database with something
    like the ".SetInfo" method used in active directory. There might be, but it
    isn't user.setinfo, as that threw an "object doesn't support this property
    or method" exception.

  3. #3
    Richard Mueller [MVP] Guest

    Re: Using WMI to disable a user account

    Documentation says that the Disabled property is read/write. Also says that
    if a property is read-only, no error is raised when you attempt to modify
    the value. This acts as if the property is read-only. Strange.

    It doesn't help this problem, but the query would be more efficient if you
    specified the user. For example:

    Set users = wmi.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name =
    'MyUserName'")

    or another option could be:

    Set objUser = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer _
    & "\root\cimv2:Win32_UserAccount." _
    & "Domain='MyDomain',Name='MyUserName'")

  4. #4
    Paul Guest

    Re: Using WMI to disable a user account

    Actually, the property *does* change, albeit briefly. Consider the following
    variation:

    compName = "localhost"
    Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//"& compName
    & "\root\cimv2")
    Set users = wmi.ExecQuery("SELECT * FROM Win32_UserAccount WHERE
    Description='whatever'")

    For Each user In users
    user.Disabled = True
    WScript.Echo user.Name & ": " & user.Disabled
    Next 'user

    For Each user In users
    WScript.Echo user.Name & ": " & user.Disabled
    Next 'user

    In the first Echo, Disabled returns True; in the second Echo, it returns
    False!

    I wonder if it's similar to making changes in an ADO Recordset, where after
    you edit a field value you have to run the Update method to write the
    changes. Might there be some WMI equivalent to the ADO Update method?

  5. #5
    Join Date
    Dec 2009
    Posts
    1

    Re: Using WMI to disable a user account

    Yes, Just call the .Put_() method to commit the whole instance:

    Code:
    user.Put.();
    Regards

    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
    Last edited by bhavesh; 22-12-2009 at 12:51 PM. Reason: Add ref links

Similar Threads

  1. Standard User Account and User Account Controls Question
    By Susquehannock in forum Operating Systems
    Replies: 6
    Last Post: 06-08-2010, 06:08 AM
  2. How to disable the User Account Control in vista
    By M. Rafi in forum Windows Software
    Replies: 4
    Last Post: 21-07-2009, 09:58 PM
  3. Partially disable UAC (User Account Control)
    By hayeden in forum Tips & Tweaks
    Replies: 1
    Last Post: 22-05-2009, 10:33 PM
  4. How to control enable/disable user account rights
    By Dhananjay in forum Active Directory
    Replies: 3
    Last Post: 17-04-2009, 01:30 PM
  5. How to disable "The User Account auto lock function"?
    By gajaratna in forum Small Business Server
    Replies: 3
    Last Post: 05-04-2008, 04:46 PM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Page generated in 1,711,689,650.24510 seconds with 17 queries