.NET WNetAddConnection2

解決


中年初級PG  2010-08-09 15:00:19  No: 102507  IP: [192.*.*.*]

WNetAddConnection2の質問です。XPでは正常にできるがWindows7では戻り値(lngRet)が0でないためエラーになります。解決策をご存知の方がいましたらご教授ねがいます。
VB2005で作成
ここから---------------------

lngRet = WNetAddConnection2(typNetResource, PassWord, UserId,CONNECT_UPDATE_PROFILE)


    '' サーバー接続用
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
    '
    Private Const RESOURCE_CONNECTED As Integer = &H1
    Private Const RESOURCETYPE_ANY As Integer = &H0
    Private Const RESOURCEDISPLAYTYPE_SHARE As Integer = &H3
    Private Const CONNECT_UPDATE_PROFILE As Integer = &H1
    '
    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
ここまで---------------------

よろしくお願いします。

編集 削除
中年初級PG  2010-08-09 15:04:48  No: 102508  IP: [192.*.*.*]

中年初級PG  追記です。
lngRetは「1219」になります。

編集 削除
魔界の仮面弁士  2010-08-09 15:19:02  No: 102509  IP: [192.*.*.*]

> VB2005で作成
ここは、VB2〜6 用の掲示板です。
VB.NET の質問は隣の掲示板に投稿して下さい。

板違いですが、とりあえずヒントだけ:

> lngRetは「1219」になります。
1219 は、下記のエラーですね。

    [ERROR_SESSION_CREDENTIAL_CONFLICT]
    同じユーザーによる、サーバーまたは共有リソースへの
    複数のユーザー名での複数の接続は許可されません。
    サーバーまたは共有リソースへの以前の接続を
    すべて切断してから、再試行してください。 

> lngRet
接頭辞が lng なのは何故でしょうか? int ならまだわかりますが。

> Alias "WNetAddConnection2A"
.NET で、ANSI バージョンの API を使うのは避けるべきです。
Public Declare Unicode Functioon 〜 か
Public Declare Auto Functioon 〜 構文を利用してください。

> Public Structure NETRESOURCE
StructLayout 属性を付与しましょう。

編集 削除
中年初級PG  2010-08-09 16:52:05  No: 102510  IP: [192.*.*.*]

魔界の仮面弁士様早速のご回答とお叱りの返信ありがとうございます。
当板の質問はこれで解決とし、新にVB.NETのほうで改めて続きから質問させて頂きます。申し訳ございませんでした。

編集 削除