プログラムの実行時にネットワークドライブを接続し、終了時にネットワークドライブを切断したい場合があります。
このような場合にネットワークドライブの接続/切断を行う方法について説明します。
実装方法には、以下のようなものがあります。
1.コマンドプロンプトを利用する。
2.Windows APIを利用する。
1の方法については、以下の記事を応用することで実装できます。
・「【コマンドプロンプト】ネットワークドライブの割り当て」
・「【VB.NET】プログラムから別のアプリケーションを実行する 」
2の方法は、コマンドプロンプトを使わずにプログラムだけで実装したい場合に利用します。
以下、サンプルです。
このような場合にネットワークドライブの接続/切断を行う方法について説明します。
実装方法には、以下のようなものがあります。
1.コマンドプロンプトを利用する。
2.Windows APIを利用する。
1の方法については、以下の記事を応用することで実装できます。
・「【コマンドプロンプト】ネットワークドライブの割り当て」
・「【VB.NET】プログラムから別のアプリケーションを実行する 」
2の方法は、コマンドプロンプトを使わずにプログラムだけで実装したい場合に利用します。
以下、サンプルです。
【事前準備】
1.Windowsアプリケーションプロジェクトを作成する。
2.フォームにボタンを2つ配置する。
→ボタン名は、「ConnectButton」と「DisConnectButton」に変更して下さい。
【コード】
サンプルでは、以下の条件としてネットワークドライブに接続することとします。
・ネットワークドライブの参照先
→コンピュータ名(svr01)の共有フォルダ(Sample)
・参照先にアクセスするためのパスワード
→設定なし
・ドライブ文字
→Zドライブを割り当てる。
《Win32API.vb》
《Form1.vb》
WNetAddConnectionAの引数は、以下の通りです。
第1引数 … ネットワークドライブの参照先
第2引数 … 参照先にアクセスするためのパスワード
第3引数 … ドライブ文字
ネットワークドライブの参照先は、UNCの記法(\\ComputerName\ShareFolderName)に従います。
パスワードが設定されている場合は、パスワードの文字列を設定します。
パスワードが設定されていない場合は、空文字("")を設定します。
ドライブ文字は、"Z:"のようにコロンを記述する必要があります。
コロンを記述していない場合、ドライブの割り当てが行われません。
【補足事項】
・このWindows APIは、引数をマーシャリングする必要はありません。
・WNetAddConnectionAは、戻り値として正常の場合は0、エラーが発生した場合はエラーコードを返します。
エラーコードは、Windows APIのエラーコードになります。
・エラーコードからエラーメッセージを取得するには、以下の記事を参考にして下さい。
「【VB.NET】Win32APIのエラーコードからメッセージを取得する」
1.Windowsアプリケーションプロジェクトを作成する。
2.フォームにボタンを2つ配置する。
→ボタン名は、「ConnectButton」と「DisConnectButton」に変更して下さい。
【コード】
サンプルでは、以下の条件としてネットワークドライブに接続することとします。
・ネットワークドライブの参照先
→コンピュータ名(svr01)の共有フォルダ(Sample)
・参照先にアクセスするためのパスワード
→設定なし
・ドライブ文字
→Zドライブを割り当てる。
《Win32API.vb》
Module Win32API
'ネットワークドライブへの接続
Public Declare Function WNetAddConnection _
Lib "mpr.dll" Alias "WNetAddConnectionA" ( _
ByVal lpRemoteName As String, _
ByVal lpPassword As String, _
ByVal lpLocalName As String) As Integer
'ネットワークドライブの切断
'第2引数は、Windows終了時に接続を回復するかどうかを表す
'Falseは、回復することを意味する
Public Declare Function WNetCancelConnection _
Lib "mpr.dll" Alias "WNetCancelConnectionA" ( _
ByVal lpName As String, _
Optional ByVal fForce As Boolean = False) As Boolean
End Module
《Form1.vb》
Public Class Form1
Private Sub ConnectButton_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ConnectButton.Click
Dim result As Integer
result = WNetAddConnection("\\svr01\Sample", "", "Z:")
Debug.WriteLine(result.ToString())
End Sub
Private Sub DisConnectButton_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles DisConnectButton.Click
Dim result As Boolean
result = WNetCancelConnection("Z:", False)
Debug.WriteLine(result.ToString())
End Sub
End Class
WNetAddConnectionAの引数は、以下の通りです。
第1引数 … ネットワークドライブの参照先
第2引数 … 参照先にアクセスするためのパスワード
第3引数 … ドライブ文字
ネットワークドライブの参照先は、UNCの記法(\\ComputerName\ShareFolderName)に従います。
パスワードが設定されている場合は、パスワードの文字列を設定します。
パスワードが設定されていない場合は、空文字("")を設定します。
ドライブ文字は、"Z:"のようにコロンを記述する必要があります。
コロンを記述していない場合、ドライブの割り当てが行われません。
【補足事項】
・このWindows APIは、引数をマーシャリングする必要はありません。
・WNetAddConnectionAは、戻り値として正常の場合は0、エラーが発生した場合はエラーコードを返します。
エラーコードは、Windows APIのエラーコードになります。
・エラーコードからエラーメッセージを取得するには、以下の記事を参考にして下さい。
「【VB.NET】Win32APIのエラーコードからメッセージを取得する」
- カテゴリ:
- VB.NET