2009-09-08 66 views
0

在以下代码示例中,其中filePath是:E:\[D]\My Collection(由Picasa在归档媒体时生成的文件夹)在XP(32位)上可以正常工作。我最近在vista 64-bit上运行了这个...和ParseDisplayName错误,“值不在预期范围内”。所有其他文件夹(没有'[D]')工作正常。任何帮助,将不胜感激。在Vista中使用ParseDisplayName的有效路径不是非常有效。为什么?

 
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; 
} 
+0

我也给了Windows的API代码包尝试(在Vista上)。 http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=WindowsAPICodePack&DownloadId=6840 示例代码中包含的缩略图演示在受到[D]文件夹时也会崩溃。 - Craig – clsturgeon 2009-09-09 23:43:45

回答

0

发生这种情况(不考虑代码包的,你可以直接使用外壳API和获取解析名称瑞普吧)在Vista中,当你选择在通用文件对话框(文件夹或任何类型的开放式的对话框)从左侧树视图。

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

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

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

+0

Keeron - 谢谢你。我明白你的意思了。我需要找更多时间来查看API代码包的其余部分。我仍然可以找到我原来问题的答案。再次感谢你。 – clsturgeon 2009-09-13 12:47:32