使用ParseDisplayName在Vista中无效的有效路径。为什么?

时间:2009-09-08 16:56:32

标签: c# shell path 64-bit windows-vista

在下面的代码示例中...其中filePath是:E:\[D]\My Collection(由picasa归档媒体时生成的文件夹)在XP(32位)上运行正常。我最近在vista 64位上运行了这个...并且ParseDisplayName错误“值不在预期范围内”。所有其他文件夹(没有'[D]')工作正常。任何帮助将不胜感激。

try
{
   int cParsed = 0;
   int pdwAttrib = 0;
   string filePath = Path.GetDirectoryName(file);
   pidlMain = IntPtr.Zero;
   folder.ParseDisplayName(IntPtr.Zero,IntPtr.Zero,filePath,out cParsed,out pidlMain,out pdwAttrib);
}
catch (Exception ex)
{
Marshal.ReleaseComObject(folder);
throw ex;
}

1 个答案:

答案 0 :(得分:0)

当您从公共文件对话框(或任何类型的“打开”对话框)中选择文件夹时,会发生这种情况(无论代码包如何;您可以通过直接使用shell API并获取解析名称来重新调用它)左侧树视图。

例如 - 使用你提到的例子 - Code pack的样本。运行示例,选择浏览,从CFD中,从左侧树视图中选择您的文件夹。如果你进入文件夹然后点击“打开”,你也会遇到同样的问题。您获得的解析名称是:

c:\folder\folder(注意重复文件夹)。

这是Vista中的一个已知问题...我担心它没有补丁(或者至少我知道 - 除非你切换到Win7 :-))