中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 20:37
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 请教:如何判断批处理文件本身是否以管理员权限运行?
可打印版本  2,393 / 10
第1楼 bootp 发表于 2009-12-17 02:20
初级用户 发帖 25 积分 66
请教:如何判断批处理文件本身是否以管理员权限运行?
Windows中有两种运行权限,

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

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

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

谢谢先~~~~~
第2楼 jarry0932 发表于 2009-12-18 00:32
初级用户 发帖 122 积分 128
双击批处理,在批处理中将当前用户信息显示出来,如果当前用户在管理组则为管理员身份运行,否则就是普通用户,批处理代码:
@echo off
net user %username% | find /i "administrators" >nul 2>nul
if %errorlevel%==1 echo 该用户为普通用户
echo 该用户为管理员
pause
第3楼 slore 发表于 2009-12-18 08:53
铂金会员 发帖 2,478 积分 5,212
运行一些限制级命令。。。能执行成功则是管理员身份
第4楼 f319 发表于 2009-12-18 12:55
新手上路 发帖 9 积分 14
2L代码有问题吧.


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

若%errorlevel%的值为1就会输出"该用户为普通用户", 然后继续运行下面的"echo 该用户为管理员".
第5楼 jarry0932 发表于 2009-12-19 00:26
初级用户 发帖 122 积分 128
谢谢LS的提醒,昨天晚上太困了,没注意,确实有错误,现更正如下:
@echo off
net user %username% | find /i "administrators" >nul 2>nul
if %errorlevel%==1 (echo 该用户为普通用户 & pause && goto:eof)
echo 该用户为管理员
pause
第6楼 Hanyeguxing 发表于 2009-12-19 00:46
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂

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

[ Last edited by Hanyeguxing on 2009-12-19 at 00:47 ]
第7楼 everest79 发表于 2009-12-21 03:55
金牌会员 发帖 1,127 积分 2,564
wmic process where name='csrss.exe' getowner
wmic process where name='cmd.exe' getowner
第8楼 bootp 发表于 2009-12-21 04:56
初级用户 发帖 25 积分 66
非常感谢!!5楼代码有效。

请教7楼,代码没看明白,能稍加解释吗?
第9楼 everest79 发表于 2009-12-22 04:31
金牌会员 发帖 1,127 积分 2,564
wmic process where name='cmd.exe' getowner
查看进程cmd.exe的所有者,也就是运行用户名,你以超级用户执行或当前登录用户执行cmd.exe,使用这个查询可以看到不同的用户名
例如
wmic process where name='csrss.exe' getowner
的所有者是system
第10楼 yishanju 发表于 2009-12-22 05:37
银牌会员 发帖 1,357 积分 1,488
7楼才是正解。
第11楼 bootp 发表于 2009-12-22 18:36
初级用户 发帖 25 积分 66
非常感谢!!
各自运行了一下,这个代码可以判断出某进程的所有者。
上面给出的答案可以判断出当前用户是不是管理员。

再次感谢!!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023