Назад | Перейти на главную страницу

Как запустить командный файл в локальной сети от имени администратора? (Vista)

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

Есть идеи, как исправить это поведение?

Я запускаю эти командные файлы через ярлык, и ярлыки не используют пути 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. Перенос его сюда также просто создал дубликат. Если кто-то, читающий это, может удалять вопросы, удалите этот.