Пакетный файл работает по-другому, если работает в режиме администратора
Я пытался создать пакетный файл для преобразования файлов в каталоге. Каталог дается через этот код:
@echo off
rem // setting input directory
:input1
set/p "inputdir=Input directory: "
rem // if input is invalid, prompt again
if not exist "%inputdir%" (
echo Directory does not exist.
echo "%inputdir%"
goto input1
)
Работает хорошо - нормально. Однако из-за того, что я рассмотрел возможность использования переменных среды позже, я также попытался запустить его от имени администратора. Однако проблема в том, что когда я запускаю его нормально, он берет каталог, сценарий продолжается без проблем. Когда я больше работаю в администраторе, он действует как "Каталог не существует"
Он нормально работает для расположений на дисках C: и D: эта проблема возникает для дисков O: и P:, которые создаются с помощью sub.
Есть идеи, как решить эту проблему? Спасибо
3 ответа
Обычные процессы и процессы с повышенными правами ("запуск от имени администратора") не используют общие сопоставления дисков (по умолчанию) или subst
г диски. Если вы запускаете процесс в контексте с повышенными правами, вам необходимо сопоставить диски или сопоставить их в контексте с повышенными правами (например, запустить cmd.exe от имени администратора), прежде чем пытаться запустить целевой сценарий.
Справка: Некоторые программы не могут получить доступ к сетевым расположениям, когда включен контроль учетных записей.
Когда вы запускаете "Запуск от имени администратора", текущая директория не соответствует вашим ожиданиям! Просто добавьте эти строки в начало вашего файла bat, чтобы доказать это себе:
@echo off
echo(CD=%CD%
pushd %~dp0
echo(CD=%CD%
pause
Итак, что вам нужно сделать, это добавить эту строку в ваш файл bat, прежде чем вы ссылаетесь на любые файлы / папки, которые я обычно помещаю в начале.
pushd %~dp0
Это также будет работать правильно при запуске с подключенного сетевого диска.
«Обычные процессы и процессы с повышенными правами («запуск от имени администратора») не используют общие сопоставления дисков (по умолчанию) или подзаголовочные диски. Если вы запускаете процесс в контексте с повышенными правами, вам придется сопоставить диски там или сопоставить их в контексте с повышенными правами. контексте (например, запустите cmd.exe от имени администратора), прежде чем пытаться запустить целевой сценарий».
СПАСИБО!!!!
Я уже 3 дня расстроен постоянными сбросами и т. д., пытаясь понять, почему, когда я отображаю Z: в некоторых случаях проводник не видит его и почему мой скрипт, который требует повышения, ДЕЙСТВУЕТ, почему он не запускался команды в if существует z:\blah ... так что еще раз спасибо, что развеяли мое трехдневное разочарование.
Что еще хуже, я разобрался с помощью MS для этого, и они тоже были в тупике.