「長いパスを認識する」環境でのPathRelativePathToへの引数の制限
以下のために長いパス意識のWindows 10上のプロセス、私は窓が法シェル使用時に引数の制限が何であるかを理解しようとしていPathRelativePathToを。 以下の例では、pinvokeを介してC#を使用してメソッドを呼び出しています。 以下に複数の例とその出力を示しました。注意: すべての例は、「from」のディレクトリパスと「to」のファイルパスを示しています(これらのパスは実際にはディスク上に存在しません)。 私の観察は 「短い」MAX_PATH長(260)未満のパスは、予期した結果で成功を返します。 「短い」MAX_PATH 上のいくつかのパスは、正しい結果で成功を返します。 「短い」MAX_PATH 上のいくつかのパスは、間違った答えで成功を返します(そうです!) かなり長いパスはエラーを返します。ただし、一定の最大長ではありません。 ソース: class Program { static class Native { // https://www.pinvoke.net/default.aspx/shlwapi.pathrelativepathto // https://docs.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-pathrelativepathtoa [DllImport("shlwapi.dll", SetLastError = true, CharSet = CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool PathRelativePathTo([Out] StringBuilder pszPath, [In] string pszFrom, [In] int dwAttrFrom, [In] string pszTo, [In] …