[VS32事件运行批处理时找不到System32 \ xyz文件夹

问题描述 投票:0回答:1

当从VS运行批处理作为生成后事件时,我的某些文件夹在命令行中变得不可见。错误日志和输出日志无法描述。

在我的后续批次中,我无法访问SCP(System32 \ OpenSSH \ scp.exe)

构建事件:

IF NOT DEFINED PUBLISHING (
set PUBLISHING ='ON'
call "$(ProjectDir)Publish.bat"
PUBLISHING=
)

call更改为start,一个cmd窗口弹出,我检查了变量并在环境中戳了一下。

  • 用户名正确
  • 该窗口以管理员身份运行(出于其他原因)
  • [PATH很好(并且与cd开头没有任何关系]

[闲逛时,如果我尝试更改目录,它会声称System32\OpenSSH不存在!(绝对路径被截断)

管理员无法访问哪些系统文件夹?

visual-studio batch-file cmd post-build-event
1个回答
1
投票

基于Mofi的评论,>>

请阅读有关WOW64 Implementation Details的Microsoft文档。有两个%SystemRoot%\ System32目录。使用哪一种取决于执行环境,32位还是64位环境。

很容易确定VS使用的cmd是x86,因此无法访问相同的System32文件夹。为了使用OpenSSH\SCP,我需要调用x64版本的cmd。

为此,我们也可以参考Mofi的other answer

结果是这样的:注意:这里我们开始一个新的cmd窗口,因为发布需要用户输入。常规的“通话”也应该很好

IF NOT DEFINED PUBLISHING (
set PUBLISHING='ON'
:: We know we are currently running x86, so call other cmd without checking version
start %SystemRoot%\Sysnative\cmd.exe /C call "$(ProjectDir)Publish.bat" 
PUBLISHING=
::Needed to add for build to 'succeed', not in original script post
exit /b 0 
)
© www.soinside.com 2019 - 2024. All rights reserved.