【问题标题】:OpenFileDialog showing different files depending on if build for 32-bit or 64-bit architecture [closed]OpenFileDialog 根据是否构建 32 位或 64 位架构显示不同的文件 [关闭]
【发布时间】:2013-08-27 14:27:15
【问题描述】:

我注意到OpenFileDialog 未能显示目录中的所有文件,这发生在 我的 应用程序以及 其他 Windows 原生程序中,例如任务管理器“新任务” " "浏览" 选项(使用OpenFileDialog 控件),有谁知道原因和可能的解决方法?
即使以管理员身份运行任务管理器也没有修复它,所以它似乎不是由权限引起的

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

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

虽然我确定它确实存在于目标位置

【问题讨论】:

  • 我对这个问题上描述的行为或多或少感到惊讶。阅读 Hans Passant 的回答后,我的惊讶进一步加深。但最令人惊讶的是,这个问题已经因为跑题而获得了3票关闭!!这里有很多知识渊博的人(对他们来说这一切都是显而易见的,或者谁能以更好的方式提出这个问题)。 IMO,这个问题很好,答案很好。
  • @varocarbas hehe,是的,我确实试图尽可能清楚地说明这个问题,因为它是如此奇怪,至于那些投票为题外话的人,他们一定从未遇到过这个怪癖/奇怪。
  • 嗯……每个人都会遇到奇怪/困难的事情;但是很多人更喜欢看不同的方向(对于将解决它的人:))。我希望看到这个问题被搁置(对你来说没什么大不了的:只需更改一点描述,就可以重新打开它),以了解谁是最接近的选民。我真的想不出更好的方法来问这个问题。
  • “您也许可以在超级用户上获得帮助”-> 完全没有意义的声明。我不认为有太多的程序员知道如何解决这个问题(在这个问题之前)。一件事是知道重复性 32/64 文件夹,而完全不同的故事是知道 System.IO 盲目地遵循所示规则;我对此一无所知,并认为这个问题/答案非常有用。
  • 好吧,我把题外话选错了。对不起。我所能做的就是投票重新开放。

标签: .net vb.net openfiledialog


【解决方案1】:

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

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

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

【讨论】:

  • 哇!!答案值得+10;不幸的是,我只能给 +1 :)
  • 谢谢,这个技巧很好,我隐约知道这个“功能”,但不知道它的确切后果,很高兴知道!
  • 请注意,如果您 需要 为 32 位(假设您正在使用没有 64 位版本的第 3 方 dll),您可以通过转到 %windir%\sysnative 从 32 位程序访问 64 位 system32 文件夹
猜你喜欢
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 2011-04-05
  • 2017-08-01
相关资源
最近更新 更多