中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 21:32
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:如何判断批处理文件本身是否以管理员权限运行? 查看 2,395 回复 10
楼 主 请教:如何判断批处理文件本身是否以管理员权限运行? 发表于 2009-12-17 02:20 ·  中国 河南 南阳 联通
初级用户
积分 66
发帖 25
注册 2006-11-26 14:33
19年会员
UID 71807
性别 男
状态 离线
Windows中有两种运行权限,

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

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

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

谢谢先~~~~~
2 发表于 2009-12-18 00:32 ·  中国 天津 电信
初级用户
★★
积分 128
发帖 122
注册 2009-09-21 06:24
16年会员
UID 152378
性别 男
状态 离线
双击批处理,在批处理中将当前用户信息显示出来,如果当前用户在管理组则为管理员身份运行,否则就是普通用户,批处理代码:
@echo off
net user %username% | find /i "administrators" >nul 2>nul
if %errorlevel%==1 echo 该用户为普通用户
echo 该用户为管理员
pause
3 发表于 2009-12-18 08:53 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
运行一些限制级命令。。。能执行成功则是管理员身份
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
4 发表于 2009-12-18 12:55 ·  中国 北京 中国科学院研究生院
新手上路
积分 14
发帖 9
注册 2008-11-24 19:17
17年会员
UID 131988
性别 男
状态 离线
2L代码有问题吧.


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

若%errorlevel%的值为1就会输出"该用户为普通用户", 然后继续运行下面的"echo 该用户为管理员".
5 发表于 2009-12-19 00:26 ·  中国 陕西 汉中 电信
初级用户
★★
积分 128
发帖 122
注册 2009-09-21 06:24
16年会员
UID 152378
性别 男
状态 离线
谢谢LS的提醒,昨天晚上太困了,没注意,确实有错误,现更正如下:
@echo off
net user %username% | find /i "administrators" >nul 2>nul
if %errorlevel%==1 (echo 该用户为普通用户 & pause && goto:eof)
echo 该用户为管理员
pause
6 发表于 2009-12-19 00:46 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
@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 ]
7 发表于 2009-12-21 03:55 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
wmic process where name='csrss.exe' getowner
wmic process where name='cmd.exe' getowner
49206C6F766520796F752067757973 54656C3A3133383238343036373837
8 发表于 2009-12-21 04:56 ·  中国 河南 濮阳 联通
初级用户
积分 66
发帖 25
注册 2006-11-26 14:33
19年会员
UID 71807
性别 男
状态 离线
非常感谢!!5楼代码有效。

请教7楼,代码没看明白,能稍加解释吗?
9 发表于 2009-12-22 04:31 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
wmic process where name='cmd.exe' getowner
查看进程cmd.exe的所有者,也就是运行用户名,你以超级用户执行或当前登录用户执行cmd.exe,使用这个查询可以看到不同的用户名
例如
wmic process where name='csrss.exe' getowner
的所有者是system
49206C6F766520796F752067757973 54656C3A3133383238343036373837
10 发表于 2009-12-22 05:37 ·  中国 北京 朝阳区 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
7楼才是正解。

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
11 发表于 2009-12-22 18:36 ·  中国 河南 南阳 联通
初级用户
积分 66
发帖 25
注册 2006-11-26 14:33
19年会员
UID 71807
性别 男
状态 离线
非常感谢!!
各自运行了一下,这个代码可以判断出某进程的所有者。
上面给出的答案可以判断出当前用户是不是管理员。

再次感谢!!
论坛跳转: