0

を使用してドライブをマップしようとしていますが、WNetAddCOnnection2何かが正しくありません。pinvoke.netから使用しているコードで、最初は機能しているようです。コードをステップ実行している場合、応答に 0 が返されSystem.IO.Directory.GetFiles()、新しいマップされたドライブを検査するために使用できるため、資格情報に問題はないと考えられます。

問題は、アプリケーションの外部でドライブを使用できないことです。net useコマンド プロンプトから入力すると、次のようにドライブが一覧表示されます。

Unavailable  L:        \\<server>\<share>          Microsoft Windows Network

ドライブにアクセスしようとすると、次のいずれかが表示されます。

The system cannot find the drive specified.

また

The system cannot find the path specified.

どんな助けでも大歓迎です。

問題のコードの概要は次のとおりです。

NETRESOURCE res = new NETRESOURCE();
res.iScope = RESOURCE_GLOBALNET;
res.iType = RESOURCETYPE_DISK;
res.iDisplayType = RESOURCEDISPLAYTYPE_SHARE;
res.iUsage = RESOURCEUSAGE_CONNECTABLE;
res.sRemoteName = share;
res.sLocalName = drive;
res.sProvider = null;

int iFlags = 0;
iFlags = CONNECT_UPDATE_PROFILE;

int iResult = WNetAddConnection2( ref res, psPassword, psUsername, iFlags );

iResult常に 0 になります。

4

1 に答える 1

1

役立つ可能性のあるMSDNの記事:
* WNetAddConnection2-[http://msdn.microsoft.com/en-us/library/aa385413%28VS.85%29.aspx] [1]
* NETRESOURCE-[http://msdn.microsoft .com / en-us / library / aa385353%28VS.85%29.aspx] [2]

問題は、「res.iDisplayType=RESOURCEDISPLAYTYPE_SHARE」の表示タイプだと思います。おそらく、値「0」(RESOURCEDISPLAYTYPE_GENERIC)に変更してみてください。たとえば、ドライブのマップに一般的に使用するものは次のようになります。


解像度付き  
  .dwScope =RES_SCOPE_GLOBALNET'値2  
  .dwType =RES_TYPE_DISK'値1  
  .dwUsage =RES_USE_CONNECT'値1  
  .localName = "x:"'ドライブがない場合は空白のままにします   
  .RemoteName = "\\\"  
で終わる
lRes = WNetAddConnection2(Res、sPassword、sDomain& "\"&sPassword、RES_CNN_UPDATE_PROFILE)
lRes=0の場合
  '成功
そうしないと   
  'エラー
終了する場合

コマンドプロンプトからの呼び出しの前後に、常に接続を確認してください。

1a)接続を行うシステムから、現在の接続をリストします。

   ネット使用

1b)接続されているシステムからも、現在のセッションを一覧表示します。

   ネットセッション

セッションを切断するには、API'WNetCancelConnection2'を使用します。これは、上記のコードです。


sServer = "\\\"
lRes = WNetCancelConnection2(sServer、RES_CNN_UPDATE_PROFILE、True)
lRes`>0の場合Then
  '成功
そうしないと
  'エラー
終了する場合

または、「net」コマンドを使用して接続するだけです。

1)ドライブ文字をマップするには:

  net use `:\\` \ `/ user:` \ ``

2)IPC接続をマップするには:

  net use \\ `\` / user: `\` ``

'net'コマンドを使用した切断:

1)マップされたドライブの切断:

  net use `:/ delete

2)サーバー共有の切断:

  net use \\ `\` / delete
于 2010-11-12T00:57:42.237 に答える