OSに対応したフォルダの共有化をするには?

解決


NOTHING  2003-04-09 09:07:12  No: 106610

こんにちは、生まれて初めてVBの質問するので緊張しています。

今、文書ファイルを扱うアプリを開発しているのですが

どうしてもフォルダの共有化がうまくいきません。

現在、APIの「NetShareAdd」を使って、NT・XPにはうまく共有化

されるのですが、98・MEには動作しません。

あるHPでは、「OSを判断して98・MEの場合は、NetShareAddとは

別のAPIを使えばよい」とまでは書いてあったのですが、肝心なAPIが

書かれていませんでした。

どうか、私に力を貸して下さい。こころよりお願い致します。m_ _m


DotL  2003-04-10 05:55:03  No: 106611

Declare Function NetShareAdd Lib "svrapi" (servername As String,ByVal level As Long,buf As Byte,parm_err As Long) As Long

でいきませんか?


NOTHING  2003-04-14 10:11:31  No: 106612

DotLさん、返事が遅れてすみませんでした。本当にありがとうござます。
さて共有化の件ですが、98環境でAPIの宣言で"svrapi"を使ってみたのですが
これって、宣言だけ変えても意味ないですよねー?エラーでした。(^c^;)
私のは下に書きましたが、全部、本に書いてあったものです。
もしかして使わない方がいいのでは?(+_+;)
ただ、98.MEとNT.XPは、「DLL」が違う事だけは知っているのですが…。
DotLさん、どうか、なにとぞ、どこをどう変えたらいいのか教えて下さい。
お願いします。m(ф)m

Declare Function NetShareAdd Lib "netapi32.dll" (ByVal servername As String, ByVal level As Long, buf As Any, parm_err As Long) As Long

'共有情報
Type SHARE_INFO_2
    shi2_netname      As Long
    shi2_type         As Long
    shi2_remark       As Long
    shi2_permissions  As Long
    shi2_max_uses     As Long
    shi2_current_uses As Long
    shi2_path         As Long
    shi2_passwd       As Long
End Type

Public Const STYPE_DISKTREE = 0
'------------------------------------------------------------

    Dim strServerName As String
    Dim udtShareInfo2 As SHARE_INFO_2
    Dim lngReturn     As Long
    Dim lngParmErr    As Long
    
    'サーバ名を設定(空文字の場合はローカルコンピュータ)
    strServerName = StrConv("", vbUnicode)
    '共有情報を設定
    
    With udtShareInfo2
        '共有名
        .shi2_netname = StrPtr("NOTHING")
        .shi2_type = STYPE_DISKTREE
        'コメント
        .shi2_remark = StrPtr("")
        .shi2_permissions = 0
        .shi2_max_uses = 7
        .shi2_current_uses = 0
        .shi2_path = StrPtr(App.Path)
        .shi2_passwd = StrPtr("")
    End With
    
    '指定したリソースを共有
    lngReturn = NetShareAdd(strServerName, _
                            2, _
                            udtShareInfo2, _  -----①
                            lngParmErr)
                            
        If lngReturn = NERR_Success Then
        MsgBox "共有化に成功しました", _
               vbInformation
    Else
        MsgBox "共有化に失敗しました", _
               vbExclamation
    End If


DotL  2003-04-16 08:00:00  No: 106613

DLLが見つからないエラーはでないと思います。

一部違ってましたが、98は

Declare Function NetShareAdd Lib "svrapi" (ByVal servername As String, ByVal level As Long, buf As Any, parm_err As Long) As Long

でいきました。ただ共有化失敗してしまうエラーのほうでしたらちょっと分かりません。(すみません。)


NOTHING  2003-04-17 03:06:01  No: 106614

こんにちは、DotLさん。お手数かけます。m_ _m

DotLさんのお陰で、新たに "svrapi" 文のところだけを書き換えましたら

「ファイルが見つかりません」のメッセージは、なくなりました。

ありがとうございます。

ただ、やはり「共有化に失敗しました」となります。

DotLさん、最後に1つだけ質問させて下さい。

もし、このフォルダが共有化されているかどうか調べることってできます?

やっぱり、これもOSで違うんでしょうか?

勝手なことばかりですみません。お願いします。


DotL  2003-04-17 08:11:27  No: 106615

定かではありませんが、指定したサーバがすでに使用されていると、関数は2018を返します。
おそらくNetShareAddは123を返していませんか?
サーバー名やパラメータの文字列によるエラーです。


NOTHING  2003-04-17 09:07:45  No: 106616

早速、お返事ありがとうございました。

OSに対応したフォルダの共有化は、もう少しテストしながらじっくり

やって行こうと思います。

また、lngReturn の返しは「XP」では、成功 = "0" 失敗 = "2118" でした。

これも、別のOSごとにチェックして行こうと思います。

DotLさん、ここ何日かのお付き合い、本当にありがとうございました。

また、ひょっこり伺いますので、その時はまたよろしくお願いします。

それじゃ、また…。m_ _m                      NOTHINGより


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加