タスクマネージャー(taskmgr.exe)を使用する場合は、「UAC仮想化」、またはWindows8の場合は「昇格」列を追加して確認できます。 ( この記事 それはかなりよく説明しています。)
しかし、コマンドプロンプトを介してこの情報を取得できますか?タスクリストまたはwmicを使用しますか?昇格ステータスを確認できるWindowsに組み込まれている他のコマンドラインツールはありますか?
私の質問は、UACを備えたすべてのWindowsOSに当てはまります。
私が見つけたCMDスクリプトを使用して管理者権限を確認する最もクリーンな方法は、次のようなものです。
@echo off
REM Calling verify with no args just checks the verify flag,
REM we use this for its side effect of setting errorlevel to zero
verify >nul
REM Attempt to read a particular system directory - the DIR
REM command will fail with a nonzero errorlevel if the directory is
REM unreadable by the current process. The DACL on the
REM c:\windows\system32\config\systemprofile directory, by default,
REM only permits SYSTEM and Administrators.
dir %windir%\system32\config\systemprofile >nul 2>nul
REM Use IF ERRORLEVEL or %errorlevel% to check the result
if not errorlevel 1 echo has Admin privs
if errorlevel 1 echo has only User privs
このメソッドはCMD.exeビルトインのみを使用するため、非常に高速である必要があります。また、SIDやグループメンバーシップをチェックするのではなく、プロセスの実際の機能をチェックするため、有効権限がテストされます。そして、これはWindows2003およびXPまでさかのぼって機能します。通常のユーザープロセスまたは昇格されていないプロセスはディレクトリプローブに失敗しますが、管理者または昇格されたプロセスは成功します。
コマンドラインにこの情報を表示できるWindowsに組み込まれているものはないと思います。 PowerShellでさえ、Win32関数を呼び出さないと役に立たないようです。
SysInternals AccessChk はあなたのために働くかもしれません:
.\accesschk.exe -p powershell.exe -e
上昇した、ショー:
[3256] powershell.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW superUserPC2\peter
RW NT AUTHORITY\SYSTEM
[3660] powershell.exe
High Mandatory Level [No-Write-Up, No-Read-Up]
RW BUILTIN\Administrators
RW NT AUTHORITY\SYSTEM
2番目のPowerShell(3660)は、High Mandatory Level
を持っているため、昇格して実行されていることがわかります。
ただし、このコマンドを標準ユーザーとして実行すると、次のようになります。
[3256] powershell.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW superUserPC2\peter
RW NT AUTHORITY\SYSTEM
Error opening [3660] powershell.exe:
Access is denied.
それでも、Access denied
を取得したため、2番目のPowerShellが昇格して実行されることはご存知でしょう。
.\accesschk.exe -p -f powershell -e
さらに多くの情報を提供します
tasklist コマンドで確認できます
tasklist /v
を試してください。これにより、どのプロセスがどの権限を持っているかがわかります。
構文:
タスクリスト/ v
サンプル使用法:
tasklist.exe/FI "username eq system"/v
これは、システムユーザーによって実行されたプロセスを一覧表示します。