日期:2014-05-17  浏览次数:20910 次

如何检测当前批处理是否以管理员身份运行?
现在我遇到了一个问题:批处理中有部分命令需要管理员身份才能执行,我不想用户等到命令执行失败,被告知需要管理员身份时才想起要以管理员身份运行,那样会浪费很多时间。

我希望能够有办法检测批处理是否以管理员身份运行,从而在第一时间就告知用户。
又或者批处理一被执行的时候,就立即向用户请求管理员权限,从而解决这个问题。

求各位高手帮忙想想办法,或者是提供一些这方面的资料,谢谢。



------解决方案--------------------
runas 直接调用管理员执行... 省去提示信息 如何...
------解决方案--------------------
探讨
runas 直接调用管理员执行... 省去提示信息 如何...

------解决方案--------------------
这个可以尝试一下用NirCMD命令行工具(可到nirsoft.net搜索下载)实现。即在bat中需要以管理员身份才能执行的每个命令行前加入nircmd的以管理员权限启动的命令,命令格式:
NirCMD.exe elevate 程序.exe 参数

需要注意的是,NirCMD的elevate命令仅在win7和2008下有效。
------解决方案--------------------
命令提示符
------解决方案--------------------
探讨
即使没有办法直接在批处理中获取管理员权限,那有没有办法检测当前批出理是否以管理员身份运行呢?
我的意思是,在批处理开始的时候检测一下,如果批处理没有以管理员身份运行,就立即告知用户然后退出程序。之后再让用户以管理员身份重新运行批处理,这样也行。

------解决方案--------------------
突破UAC....

呵呵呵 ...这个很闹心...
------解决方案--------------------
右键看看属性怎么样
------解决方案--------------------
这个东西,没这么复杂吧?net user %username% 不是可以显示当前用户的属性吗,最后就有隶属组别信息的,通过过滤提取看其中是否有 administrators 就可以判断出是否管理员身份了。不过,我对批处理这方面也不熟悉,楼主可以到 xp板块 去看看,那里有批处理高手。
------解决方案--------------------
倒不如直接使用 administrator 用户登录。
------解决方案--------------------
以其他用户运行你的批处理时,批处理获得的当前用户信息,不是你现在的这个当前用户,而是批处理运行时的那个当前用户,即批处理运行时的用户。