1

我正在尝试获取特定机器上的共享列表。所以我决定使用 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 的返回码,但似乎找不到它的含义。如果方法不正确,谁能指出我如何做到这一点的正确方向?

4

2 回答 2

5

http://msdn.microsoft.com/en-us/library/ms681383(VS.85).aspx

ERROR_NETWORK_UNREACHABLE 1231 (0x4CF)

无法访问网络位置。

于 2009-07-02T20:17:11.260 回答
0

您确定您的 NetShareEnum 定义有效吗?我对 VB.NET 不是很熟悉,但我过去曾在 c# 中使用过 netapi32,并且通常没有问题。

但无论如何,如果您想枚举计算机上的所有共享,您可以采用另一种方式。在以下注册表项中,您可以找到所有当前计算机共享:

HKLM\System\CurrentControlSet\Services\LanmanServer\Shares

每股有一个键值对。值是 REG_MULTI_SZ 类型,看起来像简单的 ini。检查“type=0”(文件共享)并读取路径。

于 2009-07-02T22:18:29.690 回答