.bat脚本复制到System32中给出了Access Denied

时间:2010-10-02 00:06:14

标签: windows permissions batch-file copy

我正在写一个.bat脚本,我需要将文件复制到System32。 我切换到该文件夹​​,然后尝试将文件从存储文件夹复制到System32文件夹。

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

我收到错误Access Denied, 0 files copied

我知道为什么这是一个问题,因为如果我尝试使用非编程GUI界面将文件复制到System32,我会收到提示,要求我确认。因此,使用该脚本,如何绕过此Windows权限或正确设置它或其他解决方案。

编辑:我从下面的答案得到的提示是,可以触发Windows显示其GUI提示,以便用户授予权限。这个想法会做。希望有人知道如何做到这一点。

3 个答案:

答案 0 :(得分:1)

属于超级用户(投票移动)。

答案是:使用提升的命令提示符(或者如果从快捷方式启动批处理文件,请在快捷方式属性中选择“以管理员身份运行”)

编辑:既然你解释说你正在寻找一种触发提升的程序化方法,你应该看看this other question(不一定是接受的答案,但是所有其他答案)。我仍然会投票结束,但作为一个骗局而不是转向超级用户。从批处理中,您可能需要查看“runas”命令,但仍需要用户确认。

答案 1 :(得分:1)

您可以使用RunAs命令以本地管理员身份复制文件。 http://ss64.com/nt/runas.html

答案 2 :(得分:0)

我在所有批处理文件中使用它来检查批处理文件开头的管理员权限吗?

@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,但是看到您需要管理员权限而我无法提供此解决方案。