如何获取映射到我的系统的所有网络驱动器的列表?

如何获取映射到我的系统的所有网络驱动器的列表?

我在本地系统帐户下映射了一个网络驱动器,也就是说我使用本地系统帐户登录我的计算机。现在我注销并使用其他有效用户帐户再次登录计算机,但我无法在计算机资源管理器中找到该映射驱动器,尽管我能够在我的应用程序中使用该映射驱动器。这是正常的吗?

有什么方法可以查看我的系统上所有映射的网络驱动器?

我在一台 Windows XP 机器上。

答案1

是的,这是正常的。网络连接和分配给它们的驱动器号是会话本地的。通常它们在注销时消失(当会话本身被破坏时),并在您再次登录时由 Winlogon 重新创建。

但它Local System变得令人困惑。

再次以以下身份登录Local Systempsexec -desi cmd可能会有用),然后运行net use列出所有连接或net use * /delete断开它们。

答案2

> net use

就是您所需要的。请参阅了解更多信息。

答案3

我使用 powershell 作为脚本的一部分从远程计算机获取映射驱动器,以将其设置移动到新计算机:(将 $OldComputer 设置为旧计算机的名称或 IP)它会遍历远程系统上的所有驱动器列表,如果它们不是本地驱动器,它将尝试删除当前计算机上的驱动器映射(以防其他计算机使用它),然后重新映射它。注释掉倒数第二行(foreach 上方的一行,并根据需要将您自己的行添加到 log 或 msgbox。)

$netObj = New-Object -com wscript.Network
$WMI1 = [WMISearcher] "Select Name, Providername from win32_mappedLogicalDisk"
$WMI1.Scope.path="\\" + $oldComputer + "\root\cimv2"
$WMI1.Options.ReturnImmediately
$ColDrives = $WMI1.Get()

foreach ($objDrive in $colDrives) {
      $TestLocal = get-wmiObject Win32_LogicalDisk | ? {$_.DeviceID -eq $objDrive.Name} | % {$_.Providername}
      If ($TestLocal) {
        Net Use /Delete $objDrive.Name >> $LogFile
      }#If
      #Map the drive
      Net use $objDrive.Name $objDrive.ProviderName  >> $LogFile
}#foreach 

相关内容