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

C# 有效路径在使用ParseDisplayName的Vista中无效。为什么?,c#,shell,path,64-bit,windows-vista,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.GetDirectoryNa

在下面的代码示例中。。。其中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; } 尝试 { int cParsed=0; int-pdwAttrib=0; 字符串filePath=Path.GetDirectoryName(文件); pidlMain=IntPtr.Zero; ParseDisplayName(IntPtr.Zero、IntPtr.Zero、filePath、out-cParsed、out-pidlMain、out-pdwAttrib); } 捕获(例外情况除外) { Marshal.ReleaseComObject(文件夹); 掷骰子; } 在Vista上,当您从左侧树状视图中选择“公用文件”对话框(或任何类型的打开对话框)中的文件夹时,就会发生这种情况(无论代码包是什么;您可以直接使用shell API并获取解析名称来重制代码包)

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

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


这是Vista中的一个已知问题。。。恐怕没有补丁(至少我知道-除非您切换到Win7:-)

我也尝试过Windows API代码包(在Vista上)。示例代码中包含的缩略图演示在使用[D]文件夹时也会崩溃。-克雷格基隆,谢谢你。我明白你的意思。我需要更多的时间来查看API代码包的其余部分。我仍然想找到我原来问题的答案。再次感谢你。