OpenFileDialog显示不同的文件,具体取决于32位或64位架构的构建

时间:2013-08-24 17:46:38

标签: .net vb.net openfiledialog

我注意到OpenFileDialog未能显示目录中的所有文件,这种情况发生在我的应用程序中,但也发生在其他 Windows本机程序中,例如任务管理器和#34;新任务" "浏览"选项(使用OpenFileDialog控件),是否有人知道原因和可能的解决方法?
即使以管理员身份运行任务管理器也没有修复它所以它不是由特权引起的

编辑:我现在知道这是由名为File System Redirector的appcompat功能引起的,显然我正在启动任务管理器32位,以及我自己的应用程序,因此它向我展示了32位system32又名SysWOW64文件夹(谈论奇怪的命名方案,在Windows 7 64位System32上有64位文件,SysWOW64包含32位文件),当你运行某个应用程序的32位版本时,你似乎无法访问64位System32文件夹通过OpenFileDialog无论如何。

例如,在这里看到,它缺少SnippingTool.exe(但不仅限于此)

TaskManager OpenFileDialog 虽然我确信它确实存在于目标位置
Windows Explorer

1 个答案:

答案 0 :(得分:6)

在64位版本的Windows上运行代码时会发生这种情况。导航栏显示您正在查看c:\ windows \ system32。但实际上你 c:\ windows \ syswow64的内容。导航到c:\ program files时会发生同样的事情。您实际上会看到c:\ program files(x86)的内容。没有32位版本的SnippingTool.exe,因此列表中缺少它。

这是一个名为"File system redirection"的appcompat功能。旨在为32位程序提供在64位操作系统上生存的机会。

通过允许程序作为64位进程运行来关闭它。右键单击EXE项目,“属性”,“构建”选项卡。将平台目标设置更改为AnyCPU。在VS2012及更高版本中,取消选中“首选32位”选项。