次の方法で共有


CreateSymbolicLinkA 関数 (winbase.h)

シンボリック リンクを作成します。

この操作をトランザクション操作として実行するには、CreateSymbolicLinkTransacted 関数を使用します。

構文

BOOLEAN CreateSymbolicLinkA(
  [in] LPCSTR lpSymlinkFileName,
  [in] LPCSTR lpTargetFileName,
  [in] DWORD  dwFlags
);

パラメーター

[in] lpSymlinkFileName

作成するシンボリック リンク。

このパラメーターにはパスを含めることができます。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付けする」を参照してください。

先端

Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。

[in] lpTargetFileName

作成するシンボリック リンクのターゲットの名前。

lpTargetFileName デバイス名が関連付けられている場合、リンクは絶対リンクとして扱われます。それ以外の場合、リンクは相対リンクとして扱われます。

このパラメーターにはパスを含めることができます。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付けする」を参照してください。

先端

Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。

[in] dwFlags

リンク ターゲット (lpTargetFileName) がディレクトリであるかどうかを示します。

価値 意味
0x0
リンク 先はファイルです。
SYMBOLIC_LINK_FLAG_DIRECTORY
0x1
リンク 先はディレクトリです。
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
0x2
プロセスが昇格されていない場合にシンボリック リンクを作成できるようにするには、このフラグを指定します。 UWP では、開発者モード は、このオプションが機能する前に、まずコンピューターで有効にする必要があります。 MSIX では、このフラグに対して開発者モードを有効にする必要はありません。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

シンボリック リンクには、絶対リンクまたは相対リンクを指定できます。 絶対リンクは、パス名の各部分を指定するリンクです。相対リンクは、相対リンク指定子が指定されたパス内のどこにあるかを基準にして決定されます。 相対リンクは、次の規則を使用して指定します。

  • ドット (. および ..) の規則 (例: "..\" は、親ディレクトリに対する相対パスを解決します。
  • スラッシュ (\\) を持たない名前 (たとえば、"tmp" は、現在のディレクトリを基準にしたパスを解決します。
  • ルート相対 -たとえば、"\Windows\System32" は "現在のドライブ:\Windows\System32" に解決されます。
  • 現在の作業ディレクトリの相対ディレクトリ。たとえば、現在の作業ディレクトリが C:\Windows\System32 の場合、"C:File.txt" は "C:\Windows\System32\File.txt" に解決されます。
    現在の作業ディレクトリの相対リンクを指定すると、ユーザーとスレッドに基づいて現在の作業ディレクトリが処理されるため、絶対リンクとして作成されます。
     
シンボリック リンクを削除するには、使用されているシンボリック リンクの種類に応じて、ファイル (DeleteFile または類似の API を使用) を削除するか、ディレクトリを削除します (removeDirectory または同様の API を使用 )。

Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。

テクノロジー サポート
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 透過的フェールオーバー (TFO) はい
SMB 3.0 とスケールアウト ファイル共有 (SO) いいえ
クラスター共有ボリューム ファイル システム (CsvFS) いいえ
回復性のあるファイル システム (ReFS) はい
 

CsvFs では、ソフト リンクやその他の再解析ポイントはサポートされていません。

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

CreateSymbolicLinkTransacted の

ファイル管理機能の

シンボリック リンク の