为什么Test-Path -Path $folder -PathType Container
会返回true
,但文件夹不存在?
路径是:
C:\ Windows \ System32下\ WindowsPowerShell \ V1.0 \模块\ MyCompany的\模块
ISE x86和ISE中的代码相同,但结果不同
答案 0 :(得分:1)
答案是here
摘录:
' System32'文件夹用于64位文件和' SysWOW64'文件夹用于32位文件
这可能有些令人困惑,但System32文件夹是有意的 对于64位文件,SysWOW64文件夹用于32位文件。
如果查看文件夹名称,这看起来有点不合逻辑,但是 对此有一个解释。它与兼容性有关。许多 开发人员已经硬编码了他们的系统文件夹的路径 应用程序源代码。他们包括" System32"在文件夹中 路径。如果应用程序已转换,则保持兼容性 对于64位代码,64位系统文件夹仍然命名为System32。
但是那些系统路径很难的32位应用程序呢 编码并在64位Windows中运行?他们怎么能找到新的 您可能会认为SysWOW64文件夹没有更改程序代码。
答案是模拟器将对System32文件夹的调用重定向到 即使文件夹是硬编码的,SysWOW64文件夹也是透明的 到System32文件夹(如C:\ Windows \ System32),模拟器将 确保使用SysWOW64文件夹。同样的来源 代码,包含包含System32文件夹的路径,可以 编译为32位和64位程序代码,无需任何更改。
请记住:•SysWOW64文件夹仅适用于32位文件 •System32文件夹仅适用于64位文件 重要的是二进制文件编译为特定的位(32或64) 安装到正确的系统文件夹。否则程序那个 需要该文件将无法加载该文件,可能不会 按预期工作。
这就是为什么ISE x86输出在SysWow64文件夹中并调用:
C:\ Windows \ System32下\ WindowsPowerShell \ V1.0 \模块\ MyCompany的\模块
被重定向到SysWow64文件夹。
ISE控制台以x64格式运行,因此将在System 32中查找并找不到此文件夹,但该文件夹是在ISE x86控制台中创建的,该控制台将文件夹保存在SysWOW64下。