Visual studio отладка от имени администратора

Обновлено: 05.07.2024

Я пробовал добавить:

в мой манифест, но я все еще получаю ошибку отказа в доступе.

Вот строка кода, которая терпит неудачу:

На данный момент у меня есть работа, но я хотел бы знать на будущее.

Если вы запустите VS как администратор, все, что вы отлаживаете, также будет работать как администратор. Я бы порекомендовал следующее исправление, иначе у вас возникнут проблемы с запуском закрепленных решений В моем случае мне пришлось перейти в раздел «Совместимость» и выбрать запуск в Windows XP (Service Pack 3). Запуск IDE от имени администратора не помог.

Просто запустите визуальную студию как администратор. Любая программа, которую вы оттуда отлаживаете, также будет запускаться от имени администратора.

Еще лучше, установите ярлык Visual Studio для запуска от имени администратора со страницы свойств @PanagiotisKanavos Я лично предпочитаю избегать работы с правами администратора, если у меня нет особой причины для этого Да. Есть несколько программ, требующих администратора. И как только я запускаю его, VS просит перезапустить VS в режиме администратора. Я не знаю, как это происходит. Я просто установил level = "requireAdministrator". Но иногда он не перезапускается автоматически, @SamIam: а какие настройки требуются после развертывания веб-приложения . Несмотря на то , принято, это не правильное решение. Вы не запускаете программы, ни VS, ни что-либо еще в качестве администратора, если в этом нет необходимости. Первоначальный вопрос касался программы, которую пишет OP, а не VS. Правильный ответ - указать, что разрабатываемая программа требует прав администратора.

VS должен запускаться с правами администратора. однако более элегантный способ - указать requiredExecutionLevel в манифесте, который должен иметь значение «requireAdministrator».

Когда вы откроете проект и попытаетесь отладить, VS2012 предупредит о праве администратора и перезапустится с правами администратора. Кроме того, exe-файл будет отмечен как требующий администратора в первую очередь, поэтому при развертывании вам не нужно настраивать права администратора в свойствах файла.

Новая версия 1.2.0 включает терминал, но когда я пытаюсь установить какой-либо пакет с помощью узла, я получаю ошибку npm ERR! код EPERM, который я обычно решаю, щелкнув правой кнопкой мыши и запустив его от имени администратора. Итак, как мне это сделать в терминале vscode? Есть что-то вроде sudo для linux?

vscode terminal

4 ответа

Вариант 1 - проще и устойчивее

Выполнение кода Visual Studio от имени администратора должно помочь.

Если вы используете Windows, вы можете:

  1. Щелкните правой кнопкой мыши ярлык или приложение / EXE
  2. Перейти к свойствам
  3. Вкладка совместимости
  4. Установите флажок «Запустить эту программу от имени администратора»

Убедитесь, что все остальные экземпляры VS Code закрыты, а затем попробуйте запустить его от имени администратора. Электронный фреймворк любит останавливать процессы при их закрытии, поэтому лучше проверить диспетчер задач и убить оставшиеся процессы.

Вариант 2 - Больше похоже на Судо

Если по какой-то странной причине он не выполняет ваши команды как администратор, вы можете попробовать команду runas . Microsoft: команда runas

  • runas /user:Administrator myCommand
  • runas "/user:First Last" "my command"
  • Только не забывайте заключать в двойные кавычки все, что имеет пробел.
  • Также вполне возможно, что вы никогда не устанавливали пароль для учетной записи администратора, так как она будет запрашивать пароль при попытке запустить команду. Вы всегда можете использовать учетную запись без имени пользователя администратора, если у нее есть права доступа / разрешения администратора.

Вот что я получаю.

Я использую код Visual Studio и его терминал для выполнения команд npm.

Код Visual Studio (не от имени администратора)
PS g: \ labs \ myproject> npm установить bootstrap @ 3

Приводит к ошибкам scandir и / или разрешению.

Код Visual Studio (от имени администратора)
Запустите эту команду после того, как я запустил что-то вроде 'ng serve'

PS g: \ labs \ myproject> npm установить bootstrap @ 3

Приводит к ошибкам scandir и / или разрешению.

Код Visual Studio (как администратор - закрытие и открытие среды IDE)
Если я уже выполнил другие команды, которые могут повлиять на модули узлов, я решил сначала закрыть Visual Studio Code, открыв его как администратор, а затем выполнив команду:

PS g: \ labs \ myproject> npm установить bootstrap @ 3

Результат, который я получаю: + bootstrap@3.3.7
добавил 115 пакетов и обновил 1 пакет за 24,685 с

Это не постоянное решение, поскольку я не хочу продолжать закрывать VS Code каждый раз, когда хочу выполнить команду npm, но это действительно решило проблему до определенного момента.

Запуск от имени администратора мне не помог. (также есть ошибки с syscall: rename)

Оказывается, эта ошибка также может возникать, если файлы заблокированы Windows.

Это может произойти, если:

  • Вы фактически запускаете проект
  • У вас есть файлы, открытые как в Visual Studio, так и в VSCode.

Запуск от имени администратора не позволяет обойти блокировку файлов Windows.

Я создал новый проект в VS2017, а затем переключился на VSCode, чтобы попытаться добавить больше пакетов. После остановки проекта и закрытия VS2017 он смог завершить работу без ошибок.

Заявление об ограничении ответственности: я не совсем уверен, означает ли это, что запуск от имени администратора не нужен, но старайтесь избегать этого, если возможно, чтобы избежать возможности того, что какой-то мошеннический пакет сделает то, для чего он не предназначен.

Шаг 1. Перезапустите VS Code от имени администратора.

(щелкните ключ Windows, найдите «Код Visual Studio», щелкните правой кнопкой мыши, и вы увидите параметр администратора)

Шаг 2. В терминале PowerShell кода VS запустите Set-ExecutionPolicy Unrestricted

enter image description here

Итак, Visual C++ for Linux Development — это расширение для Visual Studio, позволяющее писать код в привычной многим IDE под Windows, а отлаживать его прямо в целевой операционной среде — Linux. При этом используется GCC и Remote GDB Debugger. Более подробно о расширении можно прочитать в блоге разработчиков или в переводе на хабре.

Также, прошу сильно меня не ругать, я все-таки в Linux далеко не гуру. Лучше подскажите, если что-то можно сделать более оптимальным путем.

Отладка первой программы

Перед тем, как использовать удаленную отладку, нужно установить несколько компонентов на Linux системе. Как указано в инструкциях по ссылке выше, это можно сделать, выполнив в командной строке следующее:

Вызвать терминал в Ubuntu можно комбинацией клавиш Ctrl+Alt+T.

enter image description here

Я не помню, запускается ли все это хозяйство сразу или нет, по этому на всякий случай можно перезагрузиться.

Если все сделано правильно, то будет открыт порт 22. Проверить это можно используя команду nmap .

enter image description here

Но сразу подключиться из-под Visual Studio у меня не удалось, так как система почему то не пускала меня под единственным пользователем. Пришлось создать другого. Это можно сделать в System Settings → User Account.

enter image description here

При этом, не забыв нажать кнопку Unlock в верхнем правом углу.

enter image description here

Настроить подключения в Visual Studio можно в окне Tools → Options

enter image description here

Теперь можно запустить и отладить тестовый проект.

enter image description here

При этом в Ubuntu будут скопированы исходники и собранный файл программы (если это не отключено в настройках проекта). Все это можно будет найти в папке /home/<имя пользователя>/projects.

В моем случае получилось вот так:

enter image description here

Запустить программу в самом Linux можно из консоли:

enter image description here

Теперь вроде бы можно начинать работать. Я перенес исходные файлы в Visual Studio и… ничего у меня не скомпилировалось. Оказалось, что проекту не достает .h файлов из include directories.

Подключаемые файлы

Вместе с Visual C++ for Linux Development устанавливается и множество заголовочных файлов. Их можно найти тут:

Но моему проекту этого не хватило.

В блоге разработчиков по этому поводу сказано следующее:

В будущем эту проблему обещают решить, ну а сейчас крутитесь как хотите. Там же приведен пример с копированием директории всей /usr/include с помощью PuTTY.

Но мне такой путь не нравится. Лично я предпочитаю расшарить папку с заголовочными файлами. Список директория для поиска include файлов можно посмотреть, выполнив в консоли команды

enter image description here

Мне хватило папки /usr/include .

В случае с моей версией системы, перед тем как расшарить данную папку, нужно перевести ее во владение текущему пользователю. Делается это командой sudo chown -R osboxes:test '/usr/include' .

После этого можно открыть доступ к папке. Как это сделать написано тут.

После этого, сетевые пути можно прописать в Visual Studio как Include Directories.

Такой подход имеет преимущество в виде того, что вы будете работать всегда с оригинальными заголовочными файлами и вам не нужно будет ничего синхронизировать. С другой стороны, будут проблемы при переносе разработки на другой компьютер. Также, как я уже писал, я работаю с Ubuntu, установленной на виртуальной машине на моем компьютере. При такой конфигурации, проблемы с безопасностью уходят на второй план.

Но в других конфигурациях, действия, описанные мной выше, могут быть запрещены.

Таким образом, проблему синхронизации заголовочных файлов нужно решать исходя из условий работы. Тут выбор остается за вами.

Дополнительные команды компилятора и линкера

Заголовочные файлы стали видны и компиляция прошла успешно. Но вот слинковаться проекту не удалось. Дело в том, что я использую потоки и заголовочный файл "pthread.h". Для того, чтобы линкер увидел библиотеку pthread, нужно использовать опцию -pthread или -lpthread.

Для этих целей в Visual C++ for Linux Development есть специальная настройка:

enter image description here

Но у меня почему то она не работает. Проблема эта временная (разработчики уже знают об этом), но решать ее нужно здесь и сейчас. Обойти это ошибку можно используя другую опцию:

enter image description here

Если в место g++ написать g++ -pthread, то получится правильная строка линкера:

enter image description here

enter image description here

Тот же трюк срабатывает и для компилятора.

Запуск отладки с правами администратора

Теперь все скомпилировалось и слинковалось. Однако для работы программы нужны повышенные права, так как она открывает файл устройства ввода. Соответственно, отладку также нужно запускать с правами администратора. Сейчас в Visual C++ for Linux Development эта опция не реализована, но есть одно решение.

Можно повысить в правах gdb и gdbserver командами

Такой совет можно найти в комментариях в посту в блоге разработчиков.

Этот трюк работает, но он не безопасен. По сути, вы отдаете свою систему любому, кто подключается к gdbservr. В моей конфигурации это не страшно, так как все запущено на одном моем компьютере, но в других условиях нужно быть очень аккуратными с такими действиями.

Копирование дополнительных файлов

И остался последний момент. Моя программа читает настройки из текстового файла. Он является частью проекта Visual Studio и при компиляции должен копироваться в папку с исполняемым файлом.

Это можно также сделать в настройках проекта:

enter image description here

Чтобы просто скопировать файл, как остальные исходники, его можно добавить в поле Sources To Copy: @(SourcesToCopyRemotely);config.txt

А скопировать его в другую директорию можно с помощью Additional Sources To Copy.

Формат этой настройки
fulllocationpath1:=fullremotepath1;fulllocationpath2:=fullremotepath2
и т.д.

В моем случае такая строка выглядит так:

Все бы хорошо, но и тут у меня возникли проблемы.
Дело в том, что макрос $(RemoteOutDir) раскрывается в путь, начинающийся с символа "

Судя по всему, этот путь завязан с этой настройкой:

enter image description here

Так вот, при компиляции все работает хорошо. Но вот при копировании файлов почему то

воспринимается не как root директория, а просто как имя папки. То есть создается папка с именем "

enter image description here

Что в итоге

Лично я могу сказать, что Visual C++ for Linux Development extension мне помог. Несмотря на все проблемы и пару багов, он позволил мне быстрее и эффективнее решить задачу, связанную с разработкой под Linux.

Наверное, можно на это возразить, что есть более удобные пути, но я исходил только из своего опыта и знаний, а все это в основном связано с Windows.

новая версия 1.2.0 включает терминал,но когда я пытаюсь установить любой пакет с узлом, я получаю ошибку npm! код EPERM, который я обычно решаю правой кнопкой мыши и запускаю его как администратор. Итак, как я это делаю в терминале vscode? Есть что-то вроде sudo для linux?

vscode terminal

Вариант 1-Легче И Стойкий

запуск кода Visual Studio от имени администратора должен сделать трюк.

если вы на Windows, вы можете:

  1. щелкните правой кнопкой мыши ярлык или app / exe
  2. заходим в свойства совместимость
  3. галочку "выполнять эту программу от имени администратора"

убедитесь, что у вас есть все другие экземпляры VS Code закрыто, а затем попробуйте запустить от имени администратора. Electron framework любит останавливать процессы при их закрытии, Поэтому лучше всего проверить диспетчер задач и убить оставшиеся процессы.

Вариант 2-больше похоже на Sudo

если по какой-то странной причине это не работает в вашей команды как администратор, вы можете попробовать . Microsoft: runas команда

  • runas /user:Administrator myCommand
  • runas "/user:First Last" "my command"
  • не забудьте поставить двойные кавычки вокруг всего, что имеет места в нем.
  • также вполне возможно, что вы никогда не устанавливали пароль в учетной записи администратора, так как он будет запрашивать пароль при попытке выполнить команду. Вы всегда можете использовать учетную запись без имени администратора, если у нее есть доступ администратора права / разрешения.

Запуск от имени администратора мне не помог. (также есть ошибки с операции: переименовать)

оказывается, эта ошибка также может возникнуть, если файлы заблокированы Windows.

Это может произойти, если :

  • вы на самом деле запустить проект
  • у вас есть файлы, открытые как в Visual Studio, так и в VSCode.

Запуск от имени администратора не обойти блокировку файлов windows.

Я создал новый проект в VS2017 и затем переключился на VSCode, чтобы попытаться добавить больше пакетов. После остановки проекта от запуска и закрытия VS2017 он смог завершить без ошибок

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

вот что я получаю.

Я использую код Visual Studio и его терминал для выполнения команд "npm".

код Visual Studio (не как администратор)
PS g:\labs\myproject> npm установить bootstrap@3

приводит к ошибкам scandir и / или разрешений.

код Visual Studio (как администратор)
Запустите эту команду после того, как я запустил что-то вроде "ng serve"

PS g:\labs\myproject> npm установить bootstrap@3

приводит к ошибкам scandir и / или разрешений.

код Visual Studio (как администратор - закрытие и открытие IDE)
Если я уже выполнил другие команды, которые повлияют на модули узлов, я решил сначала попробовать закрыть код Visual Studio, открыв его как администратор, а затем выполнить команду:

PS g:\labs\myproject> npm установить bootstrap@3

результат я получаю тогда:+ bootstrap@3.3.7
добавлено 115 пакетов и обновлено 1 пакет в 24.685 s

Это не постоянное решение, так как я не хочу продолжать закрывать VS-код каждый раз, когда я хочу выполнить команду npm, но это решило проблему до определенного момента.

Читайте также: