Vb6 检查共享是驱动器还是文件夹
在vb6中,我想区分共享文件夹和共享驱动器 如果在PC1中,D:\与共享名Vb6 检查共享是驱动器还是文件夹,vb6,Vb6,在vb6中,我想区分共享文件夹和共享驱动器 如果在PC1中,D:\与共享名myshare共享,则为共享文件夹 在PC1中,如果D:\myfiles与共享名myshareddrive共享,则它是共享驱动器 我的意思是我将获得像\\pc1\\myshareamd\\pc1\\myshareddrive这样的输入。因此,现在我无法找到它们是共享文件夹还是共享驱动器。假定您使用的是SMB协议(用于Windows文件共享),没有可移植的方法来实现这一点,因为该协议不传递远程路径名。这种功能通常没有用处,它
myshare
共享,则为共享文件夹
在PC1中,如果D:\myfiles与共享名myshareddrive
共享,则它是共享驱动器
我的意思是我将获得像
\\pc1\\myshare
amd\\pc1\\myshareddrive
这样的输入。因此,现在我无法找到它们是共享文件夹还是共享驱动器。假定您使用的是SMB协议(用于Windows文件共享),没有可移植的方法来实现这一点,因为该协议不传递远程路径名。这种功能通常没有用处,它可能为潜在的攻击者提供潜在有用的信息
如果这是在Windows上,并且您具有管理访问权限,则可以通过WMI查询远程路径名,该WMI可以远程访问(通过身份验证)
最简单的方法是解析wmic.exe
的输出,该输出自Windows XP(不包括Home Edition)()以来在所有Windows平台上都可用:
这将产生以下方面的产出:
Path
D:\myfiles
要在VB6中执行此操作(不运行其他程序),您需要使用COM查询WMI:
Dim results As Object
results = GetObject("winmgmts:\\pc1").ExecQuery("SELECT * FROM Win32_Share WHERE Name LIKE ""myshare""")
Dim pathName As String
If Len(results) > 0 Then
pathName = results(0).Path
Else
' Throw exception instead? Could not find the share.
pathName = ""
End If
我既没有处理身份验证(用于远程使用等),也没有处理错误检查
免责声明:我只测试了与上述代码等效的VBScript,而不是它本身。假定您使用的是SMB协议(用于Windows文件共享),没有可移植的方法来实现这一点,因为该协议不传递远程路径名。这种功能通常没有用处,它可能为潜在的攻击者提供潜在有用的信息 如果这是在Windows上,并且您具有管理访问权限,则可以通过WMI查询远程路径名,该WMI可以远程访问(通过身份验证) 最简单的方法是解析
wmic.exe
的输出,该输出自Windows XP(不包括Home Edition)()以来在所有Windows平台上都可用:
这将产生以下方面的产出:
Path
D:\myfiles
要在VB6中执行此操作(不运行其他程序),您需要使用COM查询WMI:
Dim results As Object
results = GetObject("winmgmts:\\pc1").ExecQuery("SELECT * FROM Win32_Share WHERE Name LIKE ""myshare""")
Dim pathName As String
If Len(results) > 0 Then
pathName = results(0).Path
Else
' Throw exception instead? Could not find the share.
pathName = ""
End If
我既没有处理身份验证(用于远程使用等),也没有处理错误检查
免责声明:我只测试了与上述代码等效的VBScript,而不是它本身