在vb6中,我想区分共享文件夹和共享驱动器。
如果在PC1中D:\与共享名称myshare
共享,则共享文件夹
在PC1中,如果D:\ myfiles与共享名称myshareddrive
共享,则它是共享驱动器。
我的意思是我会获得\\pc1\\myshare
amd \\pc1\\myshareddrive
之类的输入。所以现在我无法确定它们是共享的驱动器还是共享驱动器。
答案 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等价物,而不是自己。