Vb6 检查共享是驱动器还是文件夹

Vb6 检查共享是驱动器还是文件夹,vb6,Vb6,在vb6中,我想区分共享文件夹和共享驱动器 如果在PC1中,D:\与共享名myshare共享,则为共享文件夹 在PC1中,如果D:\myfiles与共享名myshareddrive共享,则它是共享驱动器 我的意思是我将获得像\\pc1\\myshareamd\\pc1\\myshareddrive这样的输入。因此,现在我无法找到它们是共享文件夹还是共享驱动器。假定您使用的是SMB协议(用于Windows文件共享),没有可移植的方法来实现这一点,因为该协议不传递远程路径名。这种功能通常没有用处,它

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

如果在PC1中,D:\与共享名
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,而不是它本身