Копирование сценария .bat в System32 дает доступ запрещен - PullRequest
0 голосов
/ 02 октября 2010

Я пишу скрипт .bat, где мне нужно скопировать файл в System32.Я перехожу в папку, затем пытаюсь скопировать файл из папки хранения в папку System32.

cd C:\Windows\System32
copy %~dp0file.txt file.txt

Я получаю ошибку Access Denied, 0 files copied.

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

Редактировать: подсказка, которую я получил из ответа ниже, заключается в том, что можно вызвать Windows, чтобы показать ее приглашение GUIдля пользователя, чтобы дать разрешения.Эта идея подойдет.Надеюсь, кто-то точно знает, как это сделать.

Ответы [ 3 ]

1 голос
/ 02 октября 2010

Вы можете использовать команду RunAs, чтобы скопировать файл как локальный администратор.http://ss64.com/nt/runas.html

1 голос
/ 02 октября 2010

Принадлежит суперпользователю (голосование за перемещение).

Ответ: используйте командную строку с повышенными правами (или, если вы запускаете пакетный файл с помощью ярлыка, выберите «Запуск от имени администратора»)в свойствах ярлыка)

РЕДАКТИРОВАТЬ: Теперь, когда вы объясните, что вы ищете программный способ вызвать повышение, вы должны взглянуть на этот другой вопрос (не обязательно принятый ответ, но все остальные ответы).Я бы все равно проголосовал за закрытие, но как за дурака вместо перехода на суперпользователя.В пакетном режиме вы можете захотеть взглянуть на команду «runas», но для этого все равно потребуется подтверждение пользователя.

0 голосов
/ 02 июля 2012

Я использую это во всех моих пакетных файлах для проверки прав администратора в начале пакетного файла?

@echo off
goto permissionCheck

:permissionCheck
    echo Checking permissions...

    SET adminRights=0
    FOR /F %%i IN ('WHOAMI /PRIV /NH') DO (
        IF "%%i"=="SeTakeOwnershipPrivilege" SET adminRights=1
    )

    IF %adminRights% == 1 (
        echo Elevated permissions confirmed.

        pause >nul
    ) ELSE (
        echo Elevated permissions absent.
        echo.
        echo This file needs to be run as an Administrator.
        echo.
        echo Close this window, right-click on the file and click "Run as Administrator".
        echo   OR
        echo Log on to an Administrator account and run this file normally.

        pause >nul
    )

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

...