我如何知道用户映射了哪些网络驱动器?

我如何知道用户映射了哪些网络驱动器?

扫描以查找域中所有桌面上所有登录用户的驱动器映射设置的最佳方法是什么?这将用于确定环境中正在使用的驱动器号。

这是在 Active Directory 2003 域内的公司环境中。我目前使用 SMS 2003 广告,它运行“net use”并传输到日志文件。它需要很长时间才能到达每个桌面。有没有更好的方法?

答案1

最快的方法可能是使用威盛。如果你精通 Perl,你甚至可以使用的Win32模块。在这里的某个地方,我有一个脚本,它可以提供大部分信息。

答案2

所有这些答案都是很好的线索,可以帮助我继续前进。谢谢。

我偶然发现此 VBScript 示例这正是我想要的,而且效果很好。

以下是该文章中的代码片段:

'Define variables, constants and objects

strComputer="REMOTE MACHINE HERE"
Const HKEY_USERS = &H80000003
Set objWbem = GetObject("winmgmts:")
Set objRegistry = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")
Set objWMIService = GetObject("winmgmts:"  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

'Go and get the currently logged on user by checking the owner of the Explorer.exe process.  

Set colProc = objWmiService.ExecQuery("Select Name from Win32_Process" & " Where Name='explorer.exe' and SessionID=0")

If colProc.Count > 0 Then
   For Each oProcess In colProc
       oProcess.GetOwner sUser, sDomain
   Next
End If

'Loop through the HKEY_USERS hive until (ignoring the .DEFAULT and _CLASSES trees) until we find the tree that 
'corresponds to the currently logged on user.
lngRtn = objRegistry.EnumKey(HKEY_USERS, "", arrRegKeys)    

For Each strKey In arrRegKeys
   If UCase(strKey) = ".DEFAULT" Or UCase(Right(strKey, 8)) = "_CLASSES" Then
   Else

       Set objSID = objWbem.Get("Win32_SID.SID='" & strKey & "'")

'If the account name of the current sid we're checking matches the accountname we're looking for Then
'enumerate the Network subtree
       If objSID.accountname = sUser Then 
           regpath2enumerate = strkey & "\Network" 'strkey is the SID
           objRegistry.enumkey hkey_users, regpath2enumerate, arrkeynames

'If the array has elements, go and get the drives info from the registry
           If Not (IsEmpty(arrkeynames)) Then
               For Each subkey In arrkeynames
                   regpath = strkey & "\Network\" & subkey
                   regentry = "RemotePath"
                   objRegistry.getstringvalue hkey_users, regpath, regentry, dapath
                   wscript.echo subkey & ":" & vbTab & dapath
               Next
           End If
       End If
   End If
Next

答案3

可能有更好的方法,但您现在采用的方法实际上非常好,虽然感觉很慢,但速度不应该成为问题。

您的用户不会每天更改他们的映射,即使他们更改了,您可能也只关心那些相对永久的映射。

运行网络使用广告虽然需要一段时间,但每月只需进行几次即可掌握驱动器映射。

-亚当

答案4

我实际上曾经编写过一个程序,它可以作为登录脚本的一部分运行,收集信息,然后将其发布到网站上的数据库中。你会有兴趣运行这个程序吗?如果你愿意的话,我可以把旧代码翻出来交给你。

相关内容