Visual studio не видит все файлы в system32

Я установил несколько команд после сборки в Visual Studio 2017, которые должны позволить мне запустить программу, которая у меня сейчас есть в System32 (wsl.exe). Однако Visual Studio не видит программу.

Я попытался установить команду на dir C:\Windows\System32\, чтобы увидеть все файлы, которые он мог перечислить, и на самом деле он не перечисляет более 1000 файлов из примерно 4600 файлов, которые у меня есть, включая файл wsl.exe, который я пытаюсь бежать. Количество файлов отображается правильно при запуске той же команды в командной строке.

Я попытался запустить whoami в качестве команды после сборки, и она возвращает того же пользователя, как если бы я запустил ту же команду в командной строке.

Я что-то упускаю?

При чем здесь Visual Studio? wsl - это Подсистема Windows для Linux. Это не просто исполняемый файл. Вы жестяная банка запускаете его из любой папки, так как он находится в пути. Просто введите wsl.

Panagiotis Kanavos 10.09.2018 10:20

Это связано с Visual Studio, поскольку она вообще не может видеть файл wsl при выполнении с ним команды dir. Я знаю, что могу запустить его из любой папки, и поскольку он выдавал ошибку "wsl is not recognized as an internal or external command, operable program or batch file.", я попробовал больше шагов и пришел к выводу, что при запуске dir в командах после сборки он не отображал все файлы в каталоге. . И все это, пока я могу правильно видеть файл с помощью командной строки Windows.

PeterAS17 10.09.2018 10:23

1) без репродукции. Я это вижу и называю просто прекрасным 2) Это не имеет ничего общего с VS. dir - это команда командной строки. Вы спрашиваете, почему вы не видите некоторые файлы в System32, не указывая, что это за файлы. 3) Какой wsl? Он вообще существует? Он установлен? Вы пытаетесь запустить оболочку Unix на этапе после сборки?

Panagiotis Kanavos 10.09.2018 10:25

О вашем номере 2): тогда почему при запуске команды dir в VS не отображается файл wsl.exe, при запуске ls -al /mnt/c/Windows/System32 в WSL он отображается, и в командной строке, запускаемой `dir C: \ Windows \ System32`, также отображается. Для вашего номера 3): я уточнил, что в сообщении говорится, что действительно У меня сейчас в System32 (wsl.exe), так что да, он существует.

PeterAS17 10.09.2018 10:29

возможный дубликат Запуск сборки на основе WSL bash из Visual Studio 2015

phuclv 10.09.2018 11:14
5
5
894
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сама Visual Studio - это 32-битное приложение. Таким образом, ОС изменяет поведение приложения на другой вид папок Windows и System32. то есть c:\Windows\System32 в приложении на самом деле является папкой c:\Windows\SysWow64 для 32-битных приложений. Это объясняет, почему он не видит двоичный файл wsl.exe ... Не уверен, что можно обойти ... изучаю это ...

wsl - это подсистема Windows для Linux. Это тоже не пропало, запуск dir wsl.exe внутри System32 работает, если, конечно, эта функция установлена. В любом случае OP не должен ничего помещать в System32.
Panagiotis Kanavos 10.09.2018 10:22

Не «помещать что-либо в System32». WSL был автоматически установлен там с помощью программ и компонентов в панели управления. Еще попробую, @selbie

PeterAS17 10.09.2018 10:25

@ PeterAS17, ты не объяснил, что пытаешься сделать. Или какой WSL вы имеете в виду. Я могу запустить WSL, подсистему Windows для Linux, просто набрав wsl в консоли любой. Я прекрасно вижу это с dir после изменения текущего каталога на C:\Windows\System32. Я тоже это вижу с dir c:\Windows\system32\wsl.exe.

Panagiotis Kanavos 10.09.2018 10:27

@PanagiotisKanavos, чтобы прояснить вывод с каждой стороны: VS показывает «Файл не найден» с помощью dir c:\Windows\system32\wsl.exe. Командная строка показывает файл: 06.09.2018 15:02 114 688 wsl.exe

PeterAS17 10.09.2018 10:31

@ PeterAS17, ваш вопрос настоящий заключался в том, как запустить этап сборки Linux. На это уже ответили в этом повторяющемся вопросе

Panagiotis Kanavos 10.09.2018 10:36

@selbie Вы совершенно правы ... Я не обратил внимания на то, что VS было 32-битным приложением, и проигнорировал тот факт, что оно указывает на папку SysWow64. Копирование и вставка необходимых файлов для команды после сборки, похоже, на данный момент сделали свою работу. Должен найти лучший способ обхода, если таковой имеется. Спасибо!

PeterAS17 10.09.2018 10:36
Перенаправитель файловой системы: «32-разрядные приложения могут получить доступ к собственному системному каталогу, заменив% windir% \ System32% windir% \ Sysnative. WOW64 распознает Sysnative как специальный псевдоним, используемый для указания того, что файловая система не должна перенаправлять доступ».
Damien_The_Unbeliever 10.09.2018 10:36

Другие вопросы по теме