VBでの共有フォルダ接続について
解決したいこと
ボタンを押すと共有フォルダに接続されるコードをVBで書いているがうまく接続されない。
以下コード
Imports System.Runtime.InteropServices
Imports System.Security.Cryptography.X509Certificates
Public Class Form1
"WNetAddConnection2関数をインポート(接続)
Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" _
(ByRef lpNetResource As NetResource, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Integer) As Integer
' 接続リソースを定義
Public Structure NetResource
Public dwScope As Integer
Public dwType As Integer
Public dwDisplayType As Integer
Public dwUsage As Integer
Public lpLocalName As String
Public lpRemoteName As String
Public lpComment As String
Public lpProvider As String
End Structure
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'接続する
Dim sharedFolderPath As String = "\\172.18.1.118\共有フォルダ"
Dim username As String = "username" ' ユーザー名を指定してください
Dim password As String = "password" ' パスワードを指定してください
Try
Dim netResource As New NetResource()
netResource.dwScope = 0 ' RESOURCE_GLOBALNET
netResource.dwType = 1 ' RESOURCETYPE_DISK
netResource.dwDisplayType = 0 ' RESOURCEDISPLAYTYPE_SHARE
netResource.dwUsage = Nothing
netResource.lpComment = Nothing
netResource.lpLocalName = Nothing
netResource.lpProvider = Nothing
netResource.lpRemoteName = sharedFolderPath
Dim result2 As Integer = WNetAddConnection2(netResource, password, username, 0)
If result2 = 0 Then
MessageBox.Show("共有フォルダに接続しました。", "成功")
Else
MessageBox.Show("エラーが発生しました。エラーコード: " & result2, "エラー")
End If
Catch ex As Exception MessageBox.Show("エラーが発生しました: " & ex.Message, "エラー")
End Try
End Sub
End Class
(結果)
以下のように接続できましたというメッセージは出るのですが、
lpLocalName が NULL の場合は、ローカルデバイスのリダイレクトなしでネットワーク資源に接続する認識です。
lpLocalName をU:などのローカルドライブにすれば接続できます。
ネットワークに接続したいのですが、原因等ご教示いただけないでしょうか。