欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

實際應(yīng)用代碼

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

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

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

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

使用管理員權(quán)限運行

提供兩種方式

VBS方式

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

powershell方式

%~sdpnx0: 指向當(dāng)前批處理文件

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

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

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

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

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

下面是一個修改后的 PowerShell 命令,它可以以管理員權(quán)限運行當(dāng)前腳本:

Start-Process "$PSCommandPath" -Verb RunAs

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

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

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

組合使用

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

:: 方式一
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

更多內(nèi)容可以參考這篇文章 讓bat批處理以管理員權(quán)限運行的實現(xiàn)方法

相關(guān)文章

最新評論