返回列表 发帖
如果你这段代码可以使用,那么修改点东西就可以远程使用,前提你要有访问和操作那台计算机的权限
option explicit
Dim ComputerName,compu,oUser,oGroup
ComputerName = "此处为那台计算机的名字"
Set compu=GetObject("WinNT://"& ComputerName)   
compu.Filter = Array("User")
For Each oUser In compu
     wscript.echo  oUser.Name & " : " & GetItsGroup(oUser.Name)
Next
WScript.quit
Function GetItsGroup(sUser)
    Set oUser = GetObject("WinNT://这里填那台机器的IP/" & sUser & ",user")
    For Each oGroup In oUser.Groups
        GetItsGroup = GetItsGroup & oGroup.Name & " "
    Next
End FunctionCOPY
---学无止境---

TOP

这样,可以考虑用另外一个控件,不过现在没空先,晚上回去再帮你看看
---学无止境---

TOP

我写了一个实现了半成方法,不知道会不会比较快,但是支持用户密码。这个缺点是只能列出“用户名+用户组”(没有分开的)和“用户名”,效果自己看:
Dim strComputer,strUsername,strPassword
Dim colSWbemObjectSet,objSWbemObject,strOut
strComputer = "计算机名"
strUsername = "用户名"   '没有就留空
strPassword = "密码"     '没有就留空
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
    (strComputer, "root\cimv2", strUsername, strPassword)
Set colSWbemObjectSet = objSWbemServices.ExecQuery( _
    "SELECT * FROM Win32_Account",,48)
strOut = "用户名+用户组:" & vbCrLf
For Each objSWbemObject In colSWbemObjectSet
  strOut = strOut & objSWbemObject.Name & vbCrLf
Next
WScript.Echo strOut
strOut = "用户组:" & vbCrLf
Set colSWbemObjectSet = objSWbemServices.ExecQuery( _
    "SELECT * FROM Win32_Group",,48)
   
For Each objSWbemObject In colSWbemObjectSet
  strOut = strOut & objSWbemObject.Name & vbCrLf
Next
WScript.Echo strOut
    COPY
要完全实现可能就得用那个效率不高的方法了
---学无止境---

TOP

参考资料:

SWbemLocator
http://msdn.microsoft.com/en-us/library/aa393719(v=vs.85).aspx

Win32_GroupUser Class
http://msdn.microsoft.com/en-us/library/aa394153

Win32_Account Class
http://msdn.microsoft.com/en-us/library/aa394061(v=VS.85).aspx

Win32_Group Class
http://msdn.microsoft.com/en-us/library/aa394151(VS.85).aspx
---学无止境---

TOP

返回列表