2013-04-12 92 views
1

當我使用批處理腳本了很多,我已經花了大量的時間尋找一個純粹的批量實現,不依賴於一個錯誤級別閱讀,來檢查當前或指定用戶的管理員權限的網頁。如何檢查用戶是否是管理員?

如何檢查用戶是否是管理員?

注:這個問題是不是重複,因爲我不希望有依靠的錯誤級別的閱讀。

+0

我覺得我有在用一個班輪工作的腳本來檢查管理權限。如果我找到它,我會在早上發佈答案。我認爲這是類似於使用icacls讀取system32權限的檢查通過或失敗。 – rojo

+0

@rojo:我期待你的回答! :) – user1

+0

@ Christian.K:我正在尋找一種通用且非單一的命令/錯誤級別依賴性解決方案,只能批量編寫... – user1

回答

1

在未找到未嘗試將文件寫入系統目錄或依賴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 
+0

@Danny Beckett:感謝您的更正! – user1

+1

完全沒問題!歡迎來到堆棧溢出! :)請記住,保持您的問題和答案分開;) –

+0

@Danny Beckett:謝謝!我會盡我所能。 :) – user1

0

有一個簡單的方法來檢查管理員權限。只需使用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 
    ) 
+0

這似乎是一個有效的答案,並沒有像我的腳本那樣創建一個臨時文件... – user1

+0

這看起來很整潔,但恐怕它可能會導致在維護對象列表標誌啓用時對繁忙系統的性能影響。 (至少我不會冒險) – noonex

+0

我一旦輸入bat文件時就會這樣做......對於需要管理員的每個操作都不會一次。所以我不認爲有明顯的表現。 – RGuggisberg

相關問題