通过64位进程从SYSWOW64获取文件列表

问题描述

在Powershell脚本编写过程中遇到了问题。 我应该从poweshell 64位进程将3 .dll文件复制到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"
}

非常感谢

解决方法

我认为该解决方案没有问题,但是您的另一种选择可能是在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