2016-05-26 3 views
0

Итак, у меня есть общая проблема, с которой все, похоже, пытаются запустить пакетный файл, хранящийся на сетевом диске, в качестве администратора. Я просмотрел интернет, и есть некоторые «обходные пути», но я не уверен, как их применять, если можно вообще.Пакет: запустить как администратор из подключенного сетевого диска

Реальная задача: пакетный файл (назовём это партия # 1), чтобы скопировать файл «mms.cfg» с сетевого диска (той же директории, как партии) в system32 и SysWOW64. Конечно, эти папки защищены, поэтому нужно запускать их как admin. Но когда вы выполняете роль администратора, сопоставленный сетевой диск не существует для учетной записи «admin» и пакетных кратеров.

В данном конкретном случае партия № 1 запускает бесшумную установку вспышки. После этого ему нужно скопировать файл конфигурации в вышеупомянутые защищенные папки, чтобы отключить его функцию автоматического обновления, поскольку наши стандартные пользователи не могут запускать обновления, которые в противном случае могли бы их разыграть (почему они не могут добавить ключ к их чтобы отключить эту функцию?).

Что я пробовал: Я видел работу вокруг, чтобы установить EnableLinkedConnections=1 в реестре, но мне нужно развернуть этот пакетный файл на многочисленные компьютеры в сети и не могу изменить этот ключ реестра на каждых из них.

Я также попытался перегруппировать каталог после запуска в качестве администратора. Опять же, пакетные кратеры, поскольку он запускается с подключенного сетевого диска, а «администратор» не знает, что этот диск существует, таким образом, сбой, прежде чем я получаю возможность сопоставить диск (через pushd или что-то еще).

Я не могу просто скопировать пакет на локальный компьютер, чтобы запустить его каждый раз, как: 1) это делает другие задачи (запускает два монтажников), 2) пакетный файл сам будучи выбежала из другой партии (обозначить как пакет # 2), который сводит список обновлений программного обеспечения и применяет их молча, 3) это применение серии обновлений, в которых я (администратор домена) мог бы войти на каждый компьютер и запустить пакет # 2 для обновления серию программ (каталог автокаталогов домена для обновлений, поэтому я перехожу к I: \ updates и запускаю его).

Конечный результат Я надеюсь на: По существу это сводится к тому, как я могу запустить пакет, хранящийся на подключенном сетевом диске, с правами администратора? Есть ли способ сделать это на любом сетевом компьютере или я свожу к копированию файла конфигурации вручную в system32 и syswow64 для каждого ПК, который я хочу обновить?

TLDR: Запустить партию, хранящуюся на подключенном сетевом диске, как администратор без его хранения.

Если бы я был неясен или вам нужно предоставить дополнительную информацию, я сделаю все возможное, чтобы проверить его. Спасибо заранее за любую помощь!


UPDATE - Итак, я был в состоянии получить EnableLinkedConnections=1 установить на все наши компьютеры в домене с помощью групповой политики. Однако я заметил еще одну интересную проблему: когда вы щелкните правой кнопкой мыши &, запустите ее как admin, она работает нормально. Тем не менее, в том числе приведенный ниже код для автоматического запроса прав администратора теперь терпит неудачу, когда вы просто запускаете скрипт. Может быть, я просто пропустил что-то простое?

Снова, заблаговременно за любую помощь!

:: BatchGotAdmin 
:------------------------------------- 
REM --> Check for permissions 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 

REM --> If error flag set, we do not have admin. 
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges... 
    goto UACPrompt 
) else (goto gotAdmin) 

:UACPrompt 
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    set params = %*:"="" 
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" 

    "%temp%\getadmin.vbs" 
    del "%temp%\getadmin.vbs" 
    exit /B 

:gotAdmin 
    pushd "%CD%" 
    CD /D "%~dp0" 
:-------------------------------------- 
+0

Можете ли вы использовать UNC-пути вместо сопоставленных букв дисков? Или поднять и отобразить необходимый диск * перед * запуском партии №2? Я озадачен тем, почему только для этого обновления требуется привилегия администратора. Вы также можете исследовать с помощью 'psexec', а не для удаленного рабочего стола на каждом компьютере и запускать обновления вручную. –

+0

Диски отображаются маркером безопасности. Администраторы имеют два (нормальный и повышенный). Вам нужно отобразить как администратор, чтобы иметь сопоставленный диск для администраторов. Однако подключенные диски являются старой совместимостью. Просто используйте UNC '\\ server \ sharename \ folder \ file.ext'. Также см. «Wmic /node:computerlist.txt» вызов процесса create «c: \ someprogram.exe» ' –

+0

@HarryJohnston & Noodles - я бы предпочел не получать доступ через UNC-пути, поскольку я должен делать это на многих машинах и уже что этот каталог, отображаемый как часть входа, делает это полезным (может быть, я неправильно понял ваш вопрос?). То, что я делаю, - это входить в каждый компьютер отдельно, переходить к этому сценарию и запускать этот сценарий, и я бы предпочел не переходить через UNC каждый раз. На боковой ноте - как мне отображать диски как admin, особенно. с моей текущей ситуацией (запуск сценария, доступ к которому осуществляется через подключенный диск), перейти к «I: \ updates» вместо «\\ server \ sharename \ folder \ updates» для запуска batch2.bat)? – RisaAudr

ответ

0

Если кто-то работает в эту проблему (как я) мой обходной путь был пойти на путь UNC и создать ярлык для пакетного файла. Затем, когда вы запускаете ярлык как администратор с подключенного диска, он запускает командный файл как UNC-путь.

Смежные вопросы