You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出远程桌面中用户共享的本地驱动器

解决Windows 2012R2服务器MS Access查看远程桌面用户共享驱动器的问题

你的问题出在默认WMI查询无法跨会话访问用户专属的映射驱动器:

  • Win32_LogicalDisk仅返回系统级和当前进程会话内的物理驱动器,看不到远程桌面用户共享的本地映射
  • Win32_MappedLogicalDisk默认查询系统账户的映射,而非当前用户会话内的驱动器

以下是两种可行的解决方案:

方案一:通过WMI指定会话ID查询映射驱动器

远程桌面用户的映射驱动器属于其专属会话,需先获取会话ID,再针对性查询:

' 声明API获取当前进程ID
Private Declare PtrSafe Function GetCurrentProcessId Lib "kernel32" () As Long

Sub GetRDPMapDrives()
    Dim wql As String, SrvEx As Object, WMIObj As Object, WMIObjEx As Object
    Dim sessionId As Long
    
    ' 获取当前进程所属的用户会话ID
    Set WMIObj = GetObject("winmgmts:root/CIMV2").ExecQuery("SELECT SessionId FROM Win32_Process WHERE ProcessId = " & GetCurrentProcessId())
    For Each WMIObjEx In WMIObj
        sessionId = WMIObjEx.SessionId
    Next
    
    ' 查询该会话下的网络映射驱动器(DriveType=4表示映射驱动器)
    wql = "SELECT * FROM Win32_LogicalDisk WHERE DriveType = 4 AND SessionId = " & sessionId
    Set SrvEx = GetObject("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!root/CIMV2")
    Set WMIObj = SrvEx.ExecQuery(wql)
    
    ' 输出结果到文本框
    Me.Text1 = ""
    For Each WMIObjEx In WMIObj
        Me.Text1 = Me.Text1 & "驱动器: " & WMIObjEx.Name & vbTab & "对应本地路径: " & WMIObjEx.ProviderName & vbCrLf
    Next
End Sub

方案二:读取用户注册表获取映射信息

远程桌面的映射驱动器会在用户注册表HKEY_CURRENT_USER\Network下记录,可直接读取:

Sub GetRDPMapDrivesFromReg()
    Dim regShell As Object, regKeys As Variant, keyName As String
    
    Set regShell = CreateObject("WScript.Shell")
    Me.Text1 = ""
    
    On Error Resume Next
    ' 读取Network键下的所有子键(对应映射的驱动器字母)
    regKeys = regShell.RegRead("HKCU\Network\")
    On Error GoTo 0
    
    If IsEmpty(regKeys) Then
        Me.Text1 = "未检测到远程桌面共享驱动器"
        Exit Sub
    End If
    
    For Each keyName In regKeys
        Me.Text1 = Me.Text1 & "驱动器: " & keyName & ":" & vbTab & "对应本地路径: " & regShell.RegRead("HKCU\Network\" & keyName & "\RemotePath") & vbCrLf
    Next
End Sub

注意事项

  • 确保MS Access应用运行在远程桌面用户的会话内,而非系统账户下,否则无法访问用户专属的会话资源和注册表项
  • Windows 2012R2默认允许远程桌面驱动器映射,若用户未勾选共享选项,以上方法也无法获取结果

内容的提问来源于stack exchange,提问作者emphyrio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 11:27:18