在Windows 7中启用/禁用任务

时间:2014-05-13 00:50:13

标签: windows batch-file

我在一家公司工作,我开发了一个批处理脚本,有时需要启用或禁用。我有我的主批处理文件,它执行一个很长的进程,然后是另外两个文件来启用或禁用它。两者都可以在Windows XP中正常工作,但在Windows 7中,当我想在任务调度程序中禁用任务时,cmd提示符会出现并给我一个拒绝访问错误。但是,如果我右键单击并以管理员身份运行,这确实可以成功。

嗯,这是一个自动化过程,因此没有人会去那里做右键单击选项,而且这是为大量人员部署的。那么,我可以在批处理脚本的顶部放置一些东西,这会导致.bat默认以管理员身份运行吗?

2 个答案:

答案 0 :(得分:1)

强制批处理通过RunAs命令以不同用户身份运行。此代码段检查USERNAME环境变量。如果它不是管理员,则它会自动使用Administrator credentials using the RunAs command重新启动批处理。 Administrator password is required

@echo off
echo.Current User is '%USERNAME%'

rem -- Let's make sure this batch runs as Administrator --
set "RunAsUser=Administrator"
if "%USERNAME%" NEQ "%RunAsUser%" (
    RUNAS /user:%RunAsUser% "cmd /c %~f0"||PAUSE
    GOTO:EOF
)

rem -- your code goes below here --
echo.Hello World

ECHO.&PAUSE&GOTO:EOF

答案 1 :(得分:1)

这个脚本也适合你!只需将其粘贴到bat文件的顶部即可。如果要查看脚本的输出,请添加"暂停"命令位于批处理文件的底部。

@echo off

:: 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"
:--------------------------------------

<YOUR BATCH SCRIPT HERE>
相关问题