Папка System32 \ xyz не найдена при запуске пакета во время события сборки VS - PullRequest
0 голосов
/ 02 октября 2019

При запуске пакета как события после сборки из 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 не существует!
(усеченный абсолютный путь)

Что может сделать системные папки недоступными для администратора?

1 Ответ

1 голос
/ 03 октября 2019

На основании комментария Мофи,

Пожалуйста, прочитайте документацию Microsoft о Подробности реализации WOW64 . Существует две директории% SystemRoot% \ System32. Какой из них использовать, зависит от среды исполнения, 32- или 64-битной среды.

было легко определить, что cmd, используемый VS, был x86 и, следовательно, не имеет доступа к той же папке System32. Чтобы использовать OpenSSH\SCP, мне нужно было вызвать версию cmd для x64.

Для этого мы также можем обратиться к другому ответу Мофи .

. результат выглядит примерно так:
Примечание. Здесь мы начинаем новое окно 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 
)
...