用凭证连接远程电脑

问题描述 投票:0回答:1

我一直在尝试用vb.net连接远程PC(已知凭证并在同一网络上)到我的PC,但遇到以下错误。

Managed Debugging Assistant 'PInvokeStackImbalance' : 'A call to PInvoke function 'WindowsApp1!WindowsApp1.Form1::WNetAddConnection2' has unbalanced the stack. 这可能是因为托管的PInvoke签名与未托管的目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。

而同样的代码在Vb6中已经完美地执行了。

代码中。

Private Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long

Private Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long

Private Structure NETRESOURCE

    Dim dwType As Long
    Dim lpRemoteName As String

End Structure

Private Const RESOURCETYPE_DISK = &H1

Private Sub ConnectToPC()

    Dim networkResource As New NETRESOURCE
    Dim lon As Long

    With networkResource

        .dwType = RESOURCETYPE_DISK
        .lpRemoteName = "\\192.168.1.1"

    End With

    lon = WNetAddConnection2(networkResource, "123", "ADMIN", 0)

End Sub

抛出异常 孤独 而代码无法进一步执行。

I am new to VB.net language.Any assistance would be very helpful.I have been trying to connect remote PC(with known credentials and on the same network)to my PC with vb.net but struck at following Error::Authority.

vb.net vb6 network-programming pinvoke
1个回答
1
投票

来自JQSOFT的评论。

在签名中,将(lpNetResource As NETRESOURCE, ...

(ByRef lpNetResource As NETRESOURCE, ... 因为这里的NETRESOURCE是一个结构而不是一个类。另外,将任何 LongInteger

© www.soinside.com 2019 - 2024. All rights reserved.