Board logo

标题: 请教:如何判断批处理文件本身是否以管理员权限运行? [打印本页]

作者: bootp     时间: 2009-12-17 02:20    标题: 请教:如何判断批处理文件本身是否以管理员权限运行?
Windows中有两种运行权限,

一种是普通权限(直接双击批处理文件)

一种是管理员权限运行(右击批处理文件,选“以管理员权限运行”)

请教:在批处理中,如何判断批处理自身是否以管理员权限运行?

谢谢先~~~~~

作者: jarry0932     时间: 2009-12-18 00:32
双击批处理,在批处理中将当前用户信息显示出来,如果当前用户在管理组则为管理员身份运行,否则就是普通用户,批处理代码:
@echo off
net user %username% | find /i "administrators" >nul 2>nul
if %errorlevel%==1 echo 该用户为普通用户
echo 该用户为管理员
pause

作者: slore     时间: 2009-12-18 08:53
运行一些限制级命令。。。能执行成功则是管理员身份

作者: f319     时间: 2009-12-18 12:55
2L代码有问题吧.


if %errorlevel%==1 echo 该用户为普通用户
echo 该用户为管理员

若%errorlevel%的值为1就会输出"该用户为普通用户", 然后继续运行下面的"echo 该用户为管理员".

作者: jarry0932     时间: 2009-12-19 00:26
谢谢LS的提醒,昨天晚上太困了,没注意,确实有错误,现更正如下:
@echo off
net user %username% | find /i "administrators" >nul 2>nul
if %errorlevel%==1 (echo 该用户为普通用户 & pause && goto:eof)
echo 该用户为管理员
pause

作者: Hanyeguxing     时间: 2009-12-19 00:46
@echo off
net user %username% | find /i "administrators" >nul 2>nul
if %errorlevel%==1 (echo 普通用户)else echo 管理员
pause

使用else ,不必用goto。也可以使用&&和||来替换if的判断

Last edited by Hanyeguxing on 2009-12-19 at 00:47 ]

作者: everest79     时间: 2009-12-21 03:55
wmic process where name='csrss.exe' getowner
wmic process where name='cmd.exe' getowner

作者: bootp     时间: 2009-12-21 04:56
非常感谢!!5楼代码有效。

请教7楼,代码没看明白,能稍加解释吗?

作者: everest79     时间: 2009-12-22 04:31
wmic process where name='cmd.exe' getowner
查看进程cmd.exe的所有者,也就是运行用户名,你以超级用户执行或当前登录用户执行cmd.exe,使用这个查询可以看到不同的用户名
例如
wmic process where name='csrss.exe' getowner
的所有者是system

作者: yishanju     时间: 2009-12-22 05:37
7楼才是正解。

作者: bootp     时间: 2009-12-22 18:36
非常感谢!!
各自运行了一下,这个代码可以判断出某进程的所有者。
上面给出的答案可以判断出当前用户是不是管理员。

再次感谢!!