2013-07-16 1 views
6

У меня есть сценарий, который работает в 2 частях. Первая часть требует доступа администратора (обновляет файл HOSTS и выполняет некоторые операции копирования/перезаписи). После того, как эта часть закончится, мне нужно сопоставить диск, используя псевдоним хоста, в котором обновлена ​​первая часть скрипта.Запустить пакет как Администратор (автоподнять), а затем снять отметку

Я выяснил, как получить повышенные привилегии, используя этот SO Question. Но сопоставление диска (в то время как у администратора) отображает диск в сеансе администратора. Мне нужно «отменить» обратно в пользовательский режим, чтобы запустить мой второй скрипт.

Это сценарий, который я запускаю не реже одного раза в день и, возможно, несколько раз в день. Я пытаюсь создать решение, которое является только 1. файлом .bat, если это возможно. По причинам сценарии написаны в perl.

вещи я пытался:

  1. Использование Запуск от имени/пользователя: команда regular_user (это делает не работы)
  2. 1 биту файл с помощью ЗВОНОК для 2 пакетных файлов (Эта «работает «но по какой-то причине оба запускаются одновременно)
  3. Запуск 2 файлов bat отдельно и вручную.
  4. Поиск SO, но я не мог найти админи-> пользователя вместо только user-> админ

TLDR:Как я де-возвысить в пользовательский режим из режима администратора в пакетном файле?

ответ

2

Лучше всего использовать лучший сторонний удаленный/локальный инструмент: Windows Sysinternals PSEXEC. Вы можете предоставить учетные данные и выполнить то, что вам нужно, используя PSEXEC! Вы можете вставлять команды PSEXEC в ваш пакетный файл или vbs и запускать их без заминки. Вы также можете вызывать одну команду с повышенным разрешением PSEXEC, а следующий - без какого-либо повышения, одновременно смешивая учетные данные в одном уникальном пакетном файле.

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

+0

Прохладно, это звучит многообещающе. Благодарю. – Ishikawa91

0

ли сначала, не надземную часть, затем поднять и продолжить.

+0

Я не уверен, что это возможно в сценарии OP. OP говорит, что ему нужно сначала обновить файл HOSTS, а затем использовать новые псевдонимы для выполнения второй части. – user1071777

2

Если вы используете 2 пакетных файлов, вызовите партию ElevatedBatch.cmd с высоты с помощью Main.cmd (который продолжает делать unelevated вещи):

@ECHO OFF 
START /WAIT ElevatedBatch.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9 
REM here you can do unelevated stuff: 
ECHO Running unelevated now 

Параметр /WAIT гарантирует, что сценарий будет ждать, пока ElevatedBatch.cmd не закончилась , Для ElevatedBatch.cmd вы можете использовать шаблон, например this, чтобы поднять его.