首页 > 解决方案 > 从 64 位进程获取来自 SYSWOW64 的文件列表

问题描述

我在编写 powershell 脚本时遇到了问题。我应该将 3 个 .dll 文件从 poweshell 64 位进程复制到 C:\Windows\SYSWOW64 文件夹。如果我使用环境变量

$systemFolder = [System.Environment]::SystemDirectory

所以,在 64 位系统上的 64 位进程下

$systemFolder = "C:\Windows\system32"

是否有任何环境变量或一些结构来访问 SYSWOW64 文件夹。我想出了这样的解决方案,但我认为有更正确的解决方案

$targetFolder = [System.Environment]::SystemDirectory
if([Environment]::Is64BitProcess){
$targetFolder = "$env:windir\SYSWOW64"
}

非常感谢

标签: powershellsystem32syswow64

解决方案


我认为该解决方案没有问题,但您的另一个选择可能是在 32 位进程中运行脚本,您可以通过使用Start-Job和 RunAs32 参数作为作业运行来做到这一点。

Start-Job -ScriptBlock {[Environment]::Is64BitProcess} -RunAs32 | Wait-Job | Receive-Job
False

Start-Job -ScriptBlock {[Environment]::Is64BitProcess} | Wait-Job | Receive-Job
True

另一种选择是使用Environment.SpecialFolder

[Environment]::GetFolderPath([System.Environment+SpecialFolder]::SystemX86)
C:\WINDOWS\SysWOW64

推荐阅读