當我使用批處理腳本了很多,我已經花了大量的時間尋找一個純粹的批量實現,不依賴於一個錯誤級別閱讀,來檢查當前或指定用戶的管理員權限的網頁。如何檢查用戶是否是管理員?
如何檢查用戶是否是管理員?
注:這個問題是不是重複,因爲我不希望有依靠的錯誤級別的閱讀。
當我使用批處理腳本了很多,我已經花了大量的時間尋找一個純粹的批量實現,不依賴於一個錯誤級別閱讀,來檢查當前或指定用戶的管理員權限的網頁。如何檢查用戶是否是管理員?
如何檢查用戶是否是管理員?
注:這個問題是不是重複,因爲我不希望有依靠的錯誤級別的閱讀。
在未找到未嘗試將文件寫入系統目錄或依賴errorlevel
的批處理腳本之後,我編寫了以下腳本以便在其他腳本中使用或作爲獨立工具使用。
您可以更改代碼的腳本工作,或通過用戶名的程序來確定用戶是否爲admin。如果沒有指定用戶名,程序將檢查當前用戶的管理員。
@echo off
setlocal EnableDelayedExpansion
if "%~1" == "" (set user=%username%) ELSE (set user=%~1)
net user %user% | find "Local Group Memberships">temp.tmp
for /f %%a in ('findstr /i "Administrators" temp.tmp') do (
echo.
echo %user% is Admin...
echo.
set isadmin=y
del temp.tmp
pause
goto:eof
)
echo.
echo %user% is not Admin...
echo.
set isadmin=n
del temp.tmp
pause
goto:eof
有一個簡單的方法來檢查管理員權限。只需使用OPENFILES命令並檢查狀態。它需要管理員權限,因此您可以將輸出管道傳輸至nul並檢查結果。我建議你如圖所示使用2> nul,因爲2012 Server和Windows 8會返回ERRORLEVEL 0,但會輸出「ERROR:無法檢索數據」。這似乎是我錯了(沒有錯誤,但仍然是一個錯誤消息),但...
OPENFILES >nul 2>nul
IF ERRORLEVEL 1 (
ECHO.Right click on this file and select 'Run as administrator'.
PAUSE
GOTO :eof
)
這似乎是一個有效的答案,並沒有像我的腳本那樣創建一個臨時文件... – user1
這看起來很整潔,但恐怕它可能會導致在維護對象列表標誌啓用時對繁忙系統的性能影響。 (至少我不會冒險) – noonex
我一旦輸入bat文件時就會這樣做......對於需要管理員的每個操作都不會一次。所以我不認爲有明顯的表現。 – RGuggisberg
我覺得我有在用一個班輪工作的腳本來檢查管理權限。如果我找到它,我會在早上發佈答案。我認爲這是類似於使用icacls讀取system32權限的檢查通過或失敗。 – rojo
@rojo:我期待你的回答! :) – user1
@ Christian.K:我正在尋找一種通用且非單一的命令/錯誤級別依賴性解決方案,只能批量編寫... – user1