- ベストアンサー
VB6.0でネットワークドライブの接続・切断
VBから、ネットワークドライブにフォルダを作ろうとしたのですが、ネットワークドライブが割り当てられていない為、エラーが返ってきてしまします。 ネットワークドライブの割り当てを行うAPIは分かったのですが、それでは割り当てを要求するダイアログが表示されてしまいます。 ソフトを使用する人間の殆どがパソコンのことを殆ど分からない人ばかりなので、ネットワークドライブの割り当てと切断を自動的に行えるようにしたいと思っています。 そして、自動的に割り当てられたパスの先に任意のフォルダを作成するプログラムを作成したいのです。 ・ネットワークドライブの自動割当・切断方法 ・割り当てられたパスの取得方法 以上の二つが分かる方、お願い致します。 +++ 開発環境 +++ ・VB6.0 ・Windows2000
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Option Explicit Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long Private Const DRIVE_UNKNOWN As Long = 0& 'ドライブの判別が出来ない Private Const DRIVE_NO_ROOT_DIR As Long = 1& '指定のルートディレクトリが存在しない。 Private Const DRIVE_REMOVABLE As Long = 2& '交換可能なドライブ (フロッピーディスク等) Private Const DRIVE_FIXED As Long = 3& '固定ドライブ Private Const DRIVE_REMOTE As Long = 4& 'ネットワークドライブ Private Const DRIVE_CDROM As Long = 5& 'CD -ROM Private Const DRIVE_RAMDISK As Long = 6& 'RAM ディスク Sub Main() Dim i As Integer Dim lngSts As Long Dim strDrive As String Dim strValue As String For i = Asc("A") To Asc("Z") strDrive = Chr(i) & ":\" lngSts = GetDriveType(strDrive) Select Case lngSts Case DRIVE_UNKNOWN: strValue = strDrive & ":判別出来ない。" Case DRIVE_NO_ROOT_DIR: strValue = strDrive & ":存在しない" Case DRIVE_CDROM: strValue = strDrive & ":CD-ROM" Case DRIVE_FIXED: strValue = strDrive & ":固定ドライブ" Case DRIVE_RAMDISK: strValue = strDrive & ":RAM ディスク" Case DRIVE_REMOTE: strValue = strDrive & ":ネットワークドライブ" Case DRIVE_REMOVABLE: strValue = strDrive & ":交換可能なドライブ (フロッピーディスク等)" End Select Debug.Print strValue Next i End Sub あとは WNetAddConnection2 WNetCancelConnection2 を使用
その他の回答 (5)
以前、WSH(Windows Script Host)を利用してネットワークドライブ割り当てをしたことがあります。 MapNetworkDriveメソッドを用い、Zドライブから試してみて、エラーだったらY、X、W、V、、と試すという荒っぽいやり方ですが。 使い方は、参照設定をして、CreateObject、、です。 参考URL http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/vtoriMicrosoftWindowsScriptTechnologies.asp
お礼
回答ありがとうございました。 ドライブを試していくとかいうこともできるんですね。 一度URL見てみますね。 でもそれって、時間とかどうなんでしょう?既にネットワークドライブの割り当てがしてあるものはエラーが帰ってくるのかな?? ちょっと一度試してみますね。 ありがとうございました~
- Gin_F
- ベストアンサー率63% (286/453)
> ・ネットワークドライブの自動割当・切断方法 > ・割り当てられたパスの取得方法 ご質問は、2つでしたね。 逆の手順になると思います。 割り当てた後に、パスを取得するのではなく、割り当てるために パスの指定をしないとダメですね。 ChDrive とかを使うなり、FilsSystemObject を使うなりであいている ドライブを探すか、通常、割り当てられないようなドライブを固定で 使うかになると思います。( Z: とか)
お礼
そうなんですよね。空いているドライブも探したいんですよ。私の会社ではZとかPとか使っているようなので、確実に空いているドライブを探さないとダメなのですよ~。 空いているドライブを探す方法を教えてくださって有難うございました。参考にします。 あと問題は自動割当・切断ですね…。 中々難しいのでしょうか………
- Gin_F
- ベストアンサー率63% (286/453)
> 参考URLの先の表示が見れなかったので、 失礼しました。。(^^ゞ 今度は大丈夫だと思います。
- 参考URL:
- http://www.microsoft.com/japan/technet/prodtechnol/windowsserver2003/proddocs/standard/ctasks004.asp
お礼
わざわさ有難うございました。 一度見てみますね。
- R-Fuji
- ベストアンサー率40% (18/45)
私は普通にShellコマンドからnet useを叩いて割り当ててました。 他に良い方法があるかもしれませんが次点として参考にしてください。
お礼
有難うございました。 こういう方法もあるのですね。 ちょっと参考にして考えてみます。
- Gin_F
- ベストアンサー率63% (286/453)
MSのサイトに以下のようなものがあります。 ログオン スクリプトを作成する
お礼
さっそくの回答有難うございました。 しかし、参考URLの先の表示が見れなかったので、MSのどこからたどっていけば見れるのか教えてくださると助かります。
お礼
ソースの記述&URL有難うございました。 今別の仕事が入ってしまったので、後で試してみようと思います。 有難うございました~。