分享

Win10秘笈:如何为批处理文件bat自动添加管理员权限?

 hdzgx 2017-09-30


把如下代码(分割线之间)复制到记事本中,并保存为 .bat 格式即可(文件名可自拟):

————————— 分割线 —————————

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::      软媒魔方自动添加批处理文件管理员权限      ::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

@echo off

CLS

ECHO.

ECHO ================================

ECHO 软媒魔方获取批处理文件管理员权限

ECHO ================================

:init

setlocal DisableDelayedExpansion

set "batchPath=%~0"

for %%k in (%0) do set batchName=%%~nk

set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"

setlocal EnableDelayedExpansion

:checkPrivileges

NET FILE 1>NUL 2>NUL

if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges

if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)

ECHO.

ECHO ********************************

ECHO 请求 UAC 权限批准……

ECHO ********************************

ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"

ECHO args = "ELEV " >> "%vbsGetPrivileges%"

ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"

ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"

ECHO Next >> "%vbsGetPrivileges%"

ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"

"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*

exit /B

:gotPrivileges

setlocal & pushd .

cd /d %~dp0

if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::     以下为需要运行的批处理文件代码     ::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

rem 本行以下可修改为你需要的bat命令(从上面三行冒号开始到下面都可删改)

ECHO 欢迎使用软媒魔方!

ECHO.

pause

————————— 分割线 —————————

以上代码就是为你的bat内容获取管理员权限用的,加在你的代码之前就可以用了。运行效果如下:

图片说明:如果你的系统开启了UAC,那么就需要运行后批准一下(别嫌麻烦,最好开启UAC,比较安全)

图片说明:运行示例(有小伙伴嫌CMD丑,所以你可以在属性→颜色中调下背景透明度,再换个喜欢的壁纸……❤节日快乐❤

这个代码也支持Win7/Win8.1系统,效果如下(Windows7为例):

图片说明:Win7的CMD还没法设置透明背景

复制代码还是比较麻烦,你可以直接下载上述制作好的文件:点此进入网盘

批处理文件做完了,却发现没办法固定到开始菜单和任务栏,点此查看解决办法。很多批处理文件在运行时都需要管理员权限,然而这些程序往往需要用户手动以管理员身份运行才能正常运作,这种“半自动化”设定事实上还是比较麻烦的,要是能够双击运行直接就带管理员权限岂不是更放心?其实这也不难,使用IT之家提供的代码就可以轻松实现自动获取权限的功能。Win7/Win8.1/Win10各版本均可使用

把如下代码(分割线之间)复制到记事本中,并保存为 .bat 格式即可(文件名可自拟):

————————— 分割线 —————————

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::      软媒魔方自动添加批处理文件管理员权限      ::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

@echo off

CLS

ECHO.

ECHO ================================

ECHO 软媒魔方获取批处理文件管理员权限

ECHO ================================

:init

setlocal DisableDelayedExpansion

set "batchPath=%~0"

for %%k in (%0) do set batchName=%%~nk

set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"

setlocal EnableDelayedExpansion

:checkPrivileges

NET FILE 1>NUL 2>NUL

if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges

if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)

ECHO.

ECHO ********************************

ECHO 请求 UAC 权限批准……

ECHO ********************************

ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"

ECHO args = "ELEV " >> "%vbsGetPrivileges%"

ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"

ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"

ECHO Next >> "%vbsGetPrivileges%"

ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"

"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*

exit /B

:gotPrivileges

setlocal & pushd .

cd /d %~dp0

if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::     以下为需要运行的批处理文件代码     ::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

rem 本行以下可修改为你需要的bat命令(从上面三行冒号开始到下面都可删改)

ECHO 欢迎使用软媒魔方!

ECHO.

pause

————————— 分割线 —————————

以上代码就是为你的bat内容获取管理员权限用的,加在你的代码之前就可以用了。运行效果如下:

图片说明:如果你的系统开启了UAC,那么就需要运行后批准一下(别嫌麻烦,最好开启UAC,比较安全)

图片说明:运行示例(有小伙伴嫌CMD丑,所以你可以在属性→颜色中调下背景透明度,再换个喜欢的壁纸……❤节日快乐❤

这个代码也支持Win7/Win8.1系统,效果如下(Windows7为例):

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多