我正在尝试获取特定计算机上的共享列表。所以我决定使用Windows API NetApi32.dll。这是我的代码片段:
Dim svr As String = Environment.MachineName
Dim level As Integer = 2
Dim sharesRead As Integer, totalEntries As Integer, nRet As Integer, hResume As Integer = 0
Dim pBuffer As IntPtr = IntPtr.Zero
nRet = NetApi32.NetShareEnum(svr, level, pBuffer, -1, sharesRead, totalEntries, hResume)
我得到了1231的返回代码,但似乎找不到相同的东西。如果不正确的方式,有人能指出我如何做到这一点的正确方向吗?
答案 0 :(得分:5)
http://msdn.microsoft.com/en-us/library/ms681383(VS.85).aspx
ERROR_NETWORK_UNREACHABLE 1231(0x4CF)
无法访问网络位置。
答案 1 :(得分:0)
您确定NetShareEnum定义有效吗?我对VB.NET并不熟悉,但过去我曾在c#中使用过netapi32,一般都没有问题。
但无论如何,如果你想枚举计算机上的所有共享,你可以采用另一种方式。 在以下注册表项中,您可以找到所有当前的计算机共享:
HKLM \系统\ CurrentControlSet \服务\ LanmanServer \股份
每股有一个键值对。值为REG_MULTI_SZ类型,看起来像简单的ini。检查“type = 0”(文件共享)和读取路径。