У меня есть несколько командных файлов, которые нужно запускать от имени администратора. Я могу сделать это, если они находятся на моем компьютере, но когда я помещаю их в сеть, а затем пытаюсь запустить их от имени администратора, командная строка просто не показывает никаких выходных данных и завершается, по-видимому, без выполнения какого-либо кода. Когда я обычно запускаю сетевые командные файлы, я, по крайней мере, получаю кучу сообщений об ошибках, в которых говорится, что доступ запрещен.
Есть идеи, как исправить это поведение?
Я запускаю эти командные файлы через ярлык, и ярлыки не используют пути UNC. Я также настроил ярлык для работы от имени администратора.
Сопоставления сетевых дисков существуют для каждого сеанса пользователя, поэтому, когда ваш ярлык выполняется в контексте безопасности администратора, сопоставления дисков не существуют.
Попробуйте вызвать пакетный сценарий в ярлыке через UNC, а не указывать букву диска.
Купер на serverfault ответил на мой вопрос:
Сопоставления сетевых дисков сохраняются для каждого сеанса, поэтому, когда ваш ярлык запускается в контексте безопасности администратора, сопоставления дисков не существуют (если у администратора нет текущего сеанса, через другие runas или через текущий сеанс удаленного рабочего стола).
Попробуйте вызвать пакетный сценарий в ярлыке через UNC, а не указывать букву диска.
Я предполагаю, что диски подключены? Ярлыки не сохраняют учетные данные внутри себя, это не входит в их возможности. Если ваша сеть находится в домене, вы можете сделать так, чтобы ярлык использовал runas / noprofile / user: Administrator {Shortcut} Это будет запрашивать ваш пароль каждый раз, но гарантирует, что он будет работать от имени администратора.
Другой вариант - использовать команду psexec \ {computer} -s -c {batch file}, которая скопирует командный файл на удаленный компьютер и выполнит его как системную учетную запись. Для использования psexec у вас должны быть права администратора на удаленной машине, или вы можете указать пользователя / проход, который это делает.
Дополнительная информация: runas: http://technet.microsoft.com/en-us/library/bb490994.aspx psexec: http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
Я не совсем понимаю, о чем вы спрашиваете.
Тем не мение:
runas / пользователь: mymachine \ administrator cmd
Обычно это именно тот способ, которым вы хотите это сделать (если вы еще не являетесь администратором). Вам также может потребоваться убедиться, что вы указываете:
runas / пользователь: mydomain \ mydomainadmin cmd
поскольку у локального администратора может не быть разрешения на доступ к ресурсу, к которому вы пытаетесь получить доступ.
Мне также пришло в голову, что ваши командные файлы могут не ожидать имен UNC, таких как \\server\path\filename.txt
, они могут ожидать только drive:\path\filename.txt
. Вам нужно будет убедиться, что они не предполагают, что любая информация о пути будет в одном конкретном формате.
вы также можете попытаться создать ярлыки для командных файлов, а затем отметить опцию «Запуск от имени администратора» для ярлыков (дополнительные свойства) и запустить их вместо этого, если это возможно. Это работает, но я рекомендую вместо этого использовать runas ...
Как упоминалось в предыдущем ответе и приведенном выше комментарии, я уже задавал этот вопрос serverfault. Перенос его сюда также просто создал дубликат. Если кто-то, читающий это, может удалять вопросы, удалите этот.