楼 主
请教:如何判断批处理文件本身是否以管理员权限运行?
发表于 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 性别 男
状态 离线
非常感谢!!
各自运行了一下,这个代码可以判断出某进程的所有者。
上面给出的答案可以判断出当前用户是不是管理员。
再次感谢!!
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正