【问题标题】:Can anyone help me with the Windows API NetApi32?任何人都可以帮助我使用 Windows API NetApi32 吗?
【发布时间】:2010-11-07 18:26:04
【问题描述】:

我正在尝试获取特定机器上的共享列表。所以我决定使用 Windows API NetApi32.dll。这是我的代码 sn-p:

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 的返回码,但似乎找不到它的含义。如果方法不正确,任何人都可以为我指出正确的方向吗?

【问题讨论】:

  • 您是否尝试过使用 .NET Framework 结构而不是使用 Pinvoke 来研究解决问题的方法?
  • 是的,大多数解决方案都指向 P/Invoke...我很难找到一种纯粹的 .NET 方式。但从我的搜索带给我的信息来看,没有。就像我提到的那样,如果有更好的方法来执行此操作,我很想知道。

标签: .net winapi netapi32


【解决方案1】:

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

ERROR_NETWORK_UNREACHABLE 1231 (0x4CF)

无法访问网络位置。

【讨论】:

  • 感谢您的回复。该链接很有帮助:)
【解决方案2】:

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

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

HKLM\System\CurrentControlSet\Services\LanmanServer\Shares

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多