Запустите bat-файл от имени администратора != CMD от имени администратора и выполните построчно

Запустите bat-файл от имени администратора != CMD от имени администратора и выполните построчно

Надеюсь, кто-нибудь сможет помочь с этой проблемой. SO Win10 x64.

Мне нужно скопировать один файл XPI (расширение Firefox) в подпапку Program Files (не x86). Если я создам простой файл bat и запущу его от имени администратора с помощью правой кнопки мыши, mkdir сработает нормально, но операция копирования не сработает. Вместо этого, если я открою cmd от имени администратора и запущу операцию копирования оттуда, и mkdir, и операция копирования сработают как и ожидалось.

Мне нужно вызвать BAT из стороннего программного обеспечения с повышенными привилегиями, поэтому если я смогу решить первый сценарий, я должен решить свою проблему. Любая помощь или объяснение будут высоко оценены. Код очень прост:

mkdir "C:\Program Files\Mozilla Firefox\distribution\extensions"
copy file.xpi "C:\Program Files\Mozilla Firefox\distribution\extensions"

Заранее спасибо.

решение1

Попробуйте использовать xcopy вместо copy.

А вы не думали об использовании PowerShell?

Он гораздо более мощный, и вы можете указать учетные данные дляпроцесс. Вы также можете обойти политику выполнения с помощью Powershell.

Set-Executionpolicy Bypass -Scope Process -Force

Затем вы можете скопировать программу в PowerShell, используя

xcopy /q <source> <destination>

Если это не сработает, попробуйте вставить команду xcopy в команду Start-Process powershell. Что-то вроде...

Start-Process -FilePath "c:\Windows\System32\xcopy.exe" -ArgumentList "file.xpi  C:\Program Files\Mozilla Firefox\distribution\extensions\" -Credential domain\user

Альтернативно домен\пользователь будет выглядеть как имя_компьютера\пользователь

Обратите внимание, что Start-Process также имеет переключатель -Wait, который ждет завершения процесса.

Связанный контент