批处理文件以管理员身份运行程序-错误 740

批处理文件以管理员身份运行程序-错误 740

我正在编写一个小批处理脚本,将基本的 Windows 程序提升为以管理员身份运行。

所有功能都运行良好,但我在尝试运行“regedit.exe”时遇到了问题。

当在脚本中选择选项 3 并且它应该以管理员身份运行 regedit 时,我收到错误:

740:请求的操作需要提升。

脚本如下:

echo off
cls
echo.
echo Start as admin:
echo /----------------\
echo # 1. CMD         #
echo # 2. Task Manager#
echo # 3. Regedit     #
echo # 0. Exit        #
echo \----------------/
echo.

set /p run=

if %run%==1 (
set run="cmd"
)

if %run%==2 (
set run="taskmgr"
)

if %run%==3 (
set run="regedit"
)

if %run%==0 (
exit
)

runas /savecred /user:admin %run%

有办法解决这个问题吗?

我希望它能够在不安装第三方程序、修改注册表或禁用 UAC 的情况下正常工作。

答案1

您可以通过使用 RunAs 启动新的 CMD 提示符来实现这一点,您可以告诉它启动您的命令。

要在批处理中执行此操作,请将最后一行更改为:

runas /savecred /user:admin "cmd /c %run%"

答案2

Add this to the top of your Batch file and at the end just put %run% instead of (runas /savecred /user:admin %run%)


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

答案3

也许可以提供帮助,或者以管理员身份启动整个批处理可能会有所帮助,通过创建包含以下内容的另一个批处理脚本来完成:

runas /user:admin C:\Path_to_your_batch_file\name.bat

答案4

  1. 右键单击 C:\Windows\regedit.exe 并选择属性
  2. 在兼容性选项卡中选择“以管理员身份运行此程序”

相关内容