それで、私はこれをかなり調査してきました、そして私は答えがあると思います。
まず、私が見たものについて少し説明します!
サーバーAには、サーバーBの共有へのシンボリックリンクを含む共有があります。
\\serverA\Path\To\Folder
そしてそのターゲットは
\\serverB\Folder
実際に起こっていたのは、から返された値がFolderBrowserDialog.SelectedPath
でし\\serverB\Folder
た。文字列serverAとserverBが非常に似ているため、パスの一部が欠落していると誤って考えていました。みんなを誤解させてすみません。
このMSDNの例に従って独自のラッパーを作成しましSHGetPathFromIDList
たが、ドキュメントに記載されているにもかかわらず、Shell32.dll関数が再解析ポイントのターゲットを返していることに気付きました。
pidlパラメーターでショートカットが指定されている場合、pszPathには、ショートカットのターゲットではなく、ショートカットへのパスが含まれます。
ただし、その前のパスが正しいことに気付いたので、ステータスが変更されたときのコールバックメソッドで、変換されていない選択されたパスをキャプチャしました
private int FolderBrowserCallback(IntPtr hwnd, int msg, IntPtr lParam, IntPtr lpData)
{
switch (msg)
{
case BrowseForFolderMessages.BffmSelchanged:
if (haveValidPath && !String.IsNullOrEmpty(displayedPath))
{
if (IntPtr.Zero != _hwndEdit)
{
SelectedFullPath = displayedPath;
}
}
したがって、SelectedFullPath
プロパティにはが含まれ\\serverA\Path\To\Folder
、SelectedPath
プロパティにはが含まれます\\ServerB\Folder
。これにより、多くの作業が必要になります。