次の方法で共有


WNetAddConnection3A 関数 (winnetwk.h)

WNetAddConnection3 関数は、ネットワーク リソースに接続します。 関数は、ローカル デバイスをネットワーク リソースにリダイレクトできます。

WNetAddConnection3 関数は、WNetAddConnection2 関数に似ています。 メイン違いは、WNetAddConnection3 に追加のパラメーター (ネットワーク リソースのプロバイダーがダイアログ ボックスの所有者ウィンドウとして使用できるウィンドウへのハンドル) がある点です。 WNetAddConnection2 関数と WNetAddConnection3 関数は、WNetAddConnection 関数よりも優先されます。

構文

DWORD WNetAddConnection3A(
  [in] HWND           hwndOwner,
  [in] LPNETRESOURCEA lpNetResource,
  [in] LPCSTR         lpPassword,
  [in] LPCSTR         lpUserName,
  [in] DWORD          dwFlags
);

パラメーター

[in] hwndOwner

ネットワーク リソースのプロバイダーがダイアログ ボックスの所有者ウィンドウとして使用できるウィンドウへのハンドル。 dwFlags パラメーターでCONNECT_INTERACTIVE値を設定する場合は、このパラメーターを使用します。

hwndOwner パラメーターには NULL を指定できます。 その場合、 WNetAddConnection3 の呼び出しは 、WNetAddConnection2 関数の呼び出しと同じです。

[in] lpNetResource

ネットワーク リソース、ローカル デバイス、ネットワーク リソース プロバイダーに関する情報など、提案された接続の詳細を指定する NETRESOURCE 構造体へのポインター。

NETRESOURCE 構造体の次のメンバーを指定する必要があります。

メンバー 意味
dwType
接続するネットワーク リソースの種類。

lpLocalName メンバーが空でない文字列を指している場合、このメンバーはRESOURCETYPE_DISKまたはRESOURCETYPE_PRINTに等しい場合があります。

lpLocalNameNULL の場合、または空の文字列を指している場合、dwType はRESOURCETYPE_DISK、RESOURCETYPE_PRINT、またはRESOURCETYPE_ANYと等しい場合があります。

このメンバーは必須ですが、その情報はネットワーク サービス プロバイダーによって無視される場合があります。

lpLocalName
リダイレクトするローカル デバイスの名前 ("F:" や "LPT1" など) を指定する null で終わる文字列へのポインター。 文字列は、大文字と小文字を区別しない方法で処理されます。

文字列が空の場合、または lpLocalNameNULL の場合、関数はローカル デバイスをリダイレクトせずにネットワーク リソースに接続します。

lpRemoteName
接続するネットワーク リソースを指定する null で終わる文字列へのポインター。 文字列の長さは最大MAX_PATH文字で、ネットワーク プロバイダーの名前付け規則に従う必要があります。
lpProvider
接続するネットワーク プロバイダーを指定する null で終わる文字列へのポインター。

lpProviderNULL の場合、または空の文字列を指している場合、オペレーティング システムは lpRemoteName メンバーが指す文字列を解析して、正しいプロバイダーの特定を試みます。

このメンバーが NULL でない場合、オペレーティング システムは名前付きネットワーク プロバイダーへの接続のみを試行します。

このメンバーは、使用するネットワーク プロバイダーがわかっている場合にのみ設定する必要があります。 それ以外の場合は、ネットワーク名がマップされるネットワーク プロバイダーをオペレーティング システムで判断します。

 

WNetAddConnection3 関数は、NETRESOURCE 構造体の他のメンバーを無視します。

[in] lpPassword

ネットワーク接続の作成に使用するパスワードを指定する null で終わる文字列へのポインター。

lpPasswordNULL の場合、この関数は lpUserName パラメーターで指定されたユーザーに関連付けられている現在の既定のパスワードを使用します。

lpPassword が空の文字列を指している場合、関数はパスワードを使用しません。

無効なパスワードが原因で接続に失敗し、 dwFlags パラメーターにCONNECT_INTERACTIVE値が設定されている場合、この関数はユーザーにパスワードの入力を求めるダイアログ ボックスを表示します。

Windows Me/98/95: このパラメーターは NULL または空の文字列である必要があります。

[in] lpUserName

接続を確立するためのユーザー名を指定する null で終わる文字列へのポインター。

lpUserNameNULL の場合、関数は既定のユーザー名を使用します。 (プロセスのユーザー コンテキストは、既定のユーザー名を提供します)。

lpUserName パラメーターは、ユーザーに既定のユーザー名またはアカウント以外のユーザー名またはアカウントが割り当てられているネットワーク リソースに接続する場合に指定します。

ユーザー名の文字列は 、セキュリティ コンテキストを表します。 ネットワーク プロバイダーに固有の場合があります。

Windows Me/98/95: このパラメーターは NULL または空の文字列である必要があります。

[in] dwFlags

接続オプションのセット。 現在、次の値が定義されています。

意味
CONNECT_INTERACTIVE
このフラグが設定されている場合、オペレーティング システムは認証のためにユーザーと対話する可能性があります。
CONNECT_PROMPT
このフラグは、ユーザーに代替手段を提供することなく、ユーザー名またはパスワードに既定の設定を使用しないようにシステムに指示します。 CONNECT_INTERACTIVEも設定されていない限り、このフラグは無視されます。
CONNECT_REDIRECT
このフラグは、接続時にローカル デバイスのリダイレクトを強制します。

NETRESOURCElpLocalName メンバーがリダイレクトするローカル デバイスを指定した場合、オペレーティング システムは引き続き指定したデバイスのリダイレクトを試行するため、このフラグは無効です。 オペレーティング システムがローカル デバイスを自動的に選択する場合、 dwType メンバーはRESOURCETYPE_ANYと等しくない必要があります。

このフラグが設定されていない場合、ローカル デバイスは、ネットワークでローカル デバイスのリダイレクトが必要な場合にのみ、リダイレクト用に自動的に選択されます。

Windows Server 2003 および Windows XP: システムがネットワーク ドライブ文字を自動的に割り当てると、文字は Z: で始まり、次に Y:、終わりは C: で終わります。 これにより、ログオンごとのドライブ文字 (ネットワーク ドライブ文字など) とグローバル ドライブ文字 (ディスク ドライブなど) の競合が軽減されます。 以前のバージョンの Windows では、C: で始まり、Z: で終わるドライブ文字が割り当てられていることに注意してください。

CONNECT_UPDATE_PROFILE
ネットワーク リソース接続を記憶する必要があります。

このビット フラグが設定されている場合、オペレーティング システムは、ユーザーがログオンしたときに接続の復元を自動的に試行します。

オペレーティング システムでは、ローカル デバイスをリダイレクトする正常な接続のみが記憶されます。 失敗した接続やデバイスレス接続は記憶されません。 (デバイスレス接続は、 lpLocalName メンバーが NULL の場合、または空の文字列を指している場合に発生します)。

このビット フラグが明確な場合、オペレーティング システムはログオン時に接続を自動的に復元しません。

CONNECT_COMMANDLINE
このフラグが設定されている場合、オペレーティング システムはグラフィカル ユーザー インターフェイス (GUI) ではなくコマンド ラインを使用してユーザーに認証を求めます。 CONNECT_INTERACTIVEも設定されていない限り、このフラグは無視されます。

Windows 2000/NT と Windows Me/98/95: この値はサポートされていません。

CONNECT_CMD_SAVECRED
このフラグが設定され、オペレーティング システムが資格情報の入力を求める場合は、資格情報マネージャーによって資格情報を保存する必要があります。 呼び出し元のログオン セッションで資格情報マネージャーが無効になっている場合、またはネットワーク プロバイダーが資格情報の保存をサポートしていない場合、このフラグは無視されます。 CONNECT_COMMANDLINE フラグを設定しない限り、このフラグも無視されます。

Windows 2000/NT と Windows Me/98/95: この値はサポートされていません。

戻り値

関数が成功した場合、戻り値はNO_ERROR。

関数が失敗した場合、戻り値は システム エラー コード (次のいずれかの値など) です。

リターン コード 説明
ERROR_ACCESS_DENIED
呼び出し元はネットワーク リソースにアクセスできません。
ERROR_ALREADY_ASSIGNED
lpLocalName メンバーによって指定されたローカル デバイスは、既にネットワーク リソースに接続されています。
ERROR_BAD_DEV_TYPE
ローカル デバイスの種類とネットワーク リソースの種類が一致しません。
ERROR_BAD_DEVICE
lpLocalName で指定された値が無効です。
ERROR_BAD_NET_NAME
lpRemoteName メンバーによって指定された値は、リソース名が無効であるか、名前付きリソースが見つからないため、どのネットワーク リソース プロバイダーにも受け入れられません。
ERROR_BAD_PROFILE
ユーザー プロファイルの形式が正しくありません。
ERROR_BAD_PROVIDER
lpProvider メンバーによって指定された値が、どのプロバイダーにも一致しません。
ERROR_BUSY
ルーターまたはプロバイダーがビジー状態で、初期化中である可能性があります。 呼び出し元は再試行する必要があります。
ERROR_CANCELLED
接続の試行は、ネットワーク リソース プロバイダーの 1 つからのダイアログ ボックスまたは呼び出されたリソースによって、ユーザーによって取り消されました。
ERROR_CANNOT_OPEN_PROFILE
システムは、永続的な接続を処理するためにユーザー プロファイルを開くことができません。
ERROR_DEVICE_ALREADY_REMEMBERED
lpLocalName メンバーによって指定されたデバイスのエントリは、既にユーザー プロファイルにあります。
ERROR_EXTENDED_ERROR
ネットワーク固有のエラーが発生しました。 WNetGetLastError 関数を呼び出して、エラーの説明を取得します。
ERROR_INVALID_PASSWORD
指定したパスワードが無効であり、CONNECT_INTERACTIVE フラグが設定されていません。
ERROR_NO_NET_OR_BAD_PATH
ネットワーク コンポーネントが開始されていないか、指定した名前を使用できないため、操作を実行できません。
ERROR_NO_NETWORK
ネットワークが利用できません。

注釈

WNetUseConnection 関数は、WNetAddConnection3 関数に似ています。 メイン違いは、WNetUseConnection が使用されていないローカル デバイスを自動的に選択してネットワーク リソースにリダイレクトできることです。

Windows Server 2003 および Windows XP では、WNet 関数は、ログオン セッションに関連付けられている MS-DOS デバイス名前空間でネットワーク ドライブ文字を作成および削除します。MS-DOS デバイスは AuthenticationID (a
ログオン セッションに関連付けられているローカル一意識別子 (LUID)。 これは、WNet 関数のいずれかを呼び出して 1 人のユーザー ログオンでネットワーク ドライブ文字を作成するが、別のユーザー ログオンで既存のネットワーク ドライブ文字を照会するアプリケーションに影響を与える可能性があります。 たとえば、 CreateProcessAsUser 関数を呼び出してユーザーの 2 回目のログオンがログオン セッション内に作成され、2 番目のログオンで GetLogicalDrives 関数を呼び出すアプリケーションが実行される場合などです。 GetLogicalDrives 関数の呼び出しでは、最初のログオン時に WNet 関数呼び出しによって作成されたネットワーク ドライブ文字は返されません。 前の例では、最初のログオン セッションがまだ存在し、ターミナル サービス セッションを含む任意のログオン セッションに適用できることに注意してください。 詳細については、「 MS-DOS デバイス名の定義」を参照してください。

Windows Server 2003 および Windows XP では、LocalSystem として実行されるサービスが WNetAddConnection3 関数を呼び出すと、マップされたドライブはすべてのユーザー ログオン セッションに表示されます。

Microsoft ネットワーク プロバイダーの場合、lpNetResource パラメーターが指す NETRESOURCE 構造体の lpRemoteName メンバーには、ドット 10 進表記の IPv4 アドレスを含めることができます。 共有の例を次に示します。

\192.168.1.1\share

Windows Vista 以降の Microsoft ネットワーク プロバイダーの場合、lpNetResource パラメーターが指す NETRESOURCE 構造体の lpRemoteName メンバーには、IPv6 アドレスを含めることができます。 ただし、IPv6 アドレスが正しく解析されるように、IPv6 リテラル形式を使用する必要があります。 IPv6 リテラル アドレスの形式は次のとおりです。

':' 文字が '-' 文字に置き換えられた ipv6-address の後に ".ipv6-literal.net" 文字列が続きます。

たとえば、次の IPv6 アドレスの場合:

2001:4898:9:3:c069:aa97:fe76:2449

共有の例を次に示します。

\2001-4898-9-3-c069-aa97-fe76-2449.ipv6-literal.net\share

他のネットワーク プロバイダーは、iPv4 または IPv6 アドレスを含む lpNetResource パラメーターによって指される NETRESOURCE 構造体の lpRemoteName メンバーをサポートする場合がありますが、これは特定のネットワーク プロバイダーにかかっています。

Windows 7 と Windows Server 2008 R2: PUsernamelpPassword で指定された明示的なユーザー資格情報を使用して WNetAddConnection3 関数を呼び出して、特定のサーバー上のネットワーク リソースとの接続を確立し、これらのパラメーターのいずれかを NULL (既定のユーザー名または既定のパスワードを使用する) を使用して同じサーバーに再度呼び出した場合、 の呼び出しは失敗します。 返されるエラーは 、ERROR_BAD_USERNAME または ERROR_INVALID_PASSWORDになります。

注意

winnetwk.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして WNetAddConnection3 を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winnetwk.h
Library Mpr.lib
[DLL] Mpr.dll

こちらもご覧ください

NETRESOURCE

WNetAddConnection2

WNetCancelConnection2

WNetGetConnection

WNetUseConnection

Windows ネットワーク (WNet) の概要

Windows ネットワーク関数