最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

批處理判斷是否為管理員權限如果不是則自動獲取管理權限

 更新時間:2024年07月16日 13:16:08   作者:王二小  
有時編寫bat批處理時會用到判斷當前是否為管理員權限以及自動以管理員權限運行,在這里記錄幾個常用的方法,需要的朋友可以參考下

實際應用代碼

@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)

判斷是否以管理員身份運行

這個操作方式比較多,核心思想就是試圖訪問需要管理員身份才可以訪問的資源,可以訪問則有權限,不可以訪問則沒有權限
以下三種方式都可以進行判斷,可以靈活使用

"%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REG QUERY "HKU\S-1-5-19"
net.exe session

使用管理員權限運行

提供兩種方式

VBS方式

mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)

powershell方式

%~sdpnx0: 指向當前批處理文件

powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"

powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT

這是一個PowerShell命令,用于以管理員權限啟動當前執(zhí)行的腳本。

這段代碼的主要部分是 Start-Process '%~sdpnx0' -Verb RunAs,其中 %~sdpnx0 是一個批處理腳本中的變量替換,表示當前執(zhí)行的批處理腳本文件的全路徑名。-Verb RunAs 參數指示 Start-Process 使用提升的權限運行進程。

但是,這個命令在 PowerShell 中并不會直接以管理員權限運行當前腳本,因為 %~sdpnx0 這個變量替換在 PowerShell 中不會被正確解析。在 PowerShell 中,你可以使用 $PSCommandPath 變量來獲取當前腳本的完整路徑,然后使用 Start-Process 命令以管理員權限運行它。

下面是一個修改后的 PowerShell 命令,它可以以管理員權限運行當前腳本:

Start-Process "$PSCommandPath" -Verb RunAs

如果你想要這個命令在執(zhí)行后自動退出,你可以在命令的末尾添加 & exit,如下所示:

Start-Process "$PSCommandPath" -Verb RunAs & exit

請注意,這些命令應該在 PowerShell 腳本中使用,而不是在批處理文件中。批處理文件中應使用不同的語法。

組合使用

提供兩種組合方式,代碼放于批處理前面使用即可,其他自由組合

:: 方式一
REG QUERY "HKU\S-1-5-19">NUL 2>&1||(powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&exit)
:: 方式二
REG QUERY "HKU\S-1-5-19">NUL 2>&1||mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

自動用管理員身份運行bat

將以下代碼加在開頭

第一種:

@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
cd /D "%~dp0"

第二種:

@ echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
:Admin

更多內容可以參考這篇文章 讓bat批處理以管理員權限運行的實現方法

相關文章

最新評論

西昌市| 邢台市| 璧山县| 收藏| 揭西县| 合川市| 彰化市| 潮州市| 澜沧| 宜都市| 新余市| 凤庆县| 方山县| 天全县| 武邑县| 酉阳| 绥棱县| 黄石市| 新乡县| 淳化县| 天津市| 闻喜县| 辽宁省| 即墨市| 甘肃省| 定兴县| 固原市| 抚宁县| 乐都县| 且末县| 揭东县| 武平县| 寿阳县| 中西区| 犍为县| 封丘县| 巴林左旗| 西乌珠穆沁旗| 镇赉县| 邢台市| 稻城县|