检查共享是一个驱动器或文件夹

时间:2014-09-08 09:44:45

标签: vb6

在vb6中,我想区分共享文件夹和共享驱动器。

如果在PC1中D:\与共享名称myshare共享,则共享文件夹

在PC1中,如果D:\ myfiles与共享名称myshareddrive共享,则它是共享驱动器。

我的意思是我会获得\\pc1\\myshare amd \\pc1\\myshareddrive之类的输入。所以现在我无法确定它们是共享的驱动器还是共享驱动器。

1 个答案:

答案 0 :(得分:4)

假设您正在使用SMB协议(用于Windows文件共享),没有可移植的方法来实现此目的,因为协议不传达远程路径名。这种功能通常没用,它可以为潜在的攻击者提供潜在的有用信息。

如果这是在Windows上并且您具有管理访问权限,则可以通过WMI查询远程路径名称,该名称可以远程访问(使用身份验证)。

最简单的方法是解析wmic.exe的输出,该输出自Windows XP(不包括家庭版)(related superuser.com question)以来在所有Windows平台上都可用:

wmic /node:pc1 share where "name like 'myshare'" get path

哪个应按以下方式产生输出:

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等价物,而不是自己。