您现在的位置: 爱51代码网 >> 范文 >> 文章正文
如何检测当前批处理是否以管理员身份运行

批处理中有部分命令需要管理员身份才能执行,我不想用户等到命令执行失败,被告知需要管理员身份时才想起要以管理员身份运行,那样会浪费很多时间。

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

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

runas  直接调用管理员执行... 省去提示信息 如何...

runas 需要一个具有管理员权限的账号比如administrator,可是一般用户这个帐号默认都是禁用的,而且runas还需要提示输入账户密码,更闹心了。

lz这个要求依靠批处理在普通账户下执行,实现起来基本无望,连大名鼎鼎的process explorer在普通账户下如果不右键提权,获取信息都不全。

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

需要注意的是,NirCMD的elevate命令仅在win7和2008下有效。

办法1 写入文件法
向System32文件夹写入临时文件,若能写入成功,则说明批处理具有管理员权限,否则说明不具有。
代码如下:
 @ECHO OFF   Rem 创建文件路径 set TempFile_Name=%SystemRoot%\System32\BatTestUACin_SysRt%Random%.batemp echo %TempFile_Name%   Rem 写入文件 ( echo "BAT Test UAC in Temp" >%TempFile_Name% ) 1>nul 2>nul   Rem 判断写入是否成功 if exist %TempFile_Name% ( echo 正在以管理员身份运行当前批处理 ) else ( echo 没有以管理员身份运行当前批处理  ) pause   Rem 删除临时文件 del %TempFile_Name% 1>nul 2>nul   echo 按空格键退出…… pause >nul 


方法2 窗口标题判断法
以管理员身份运行的批处理,设置标题后,标题前方会提示 "管理员:  " ,可判断特定窗口标题所对应的进程名是否为cmd.exe 来确认批处理是否以管理员身份运行。代码如下:
 @echo off title BAT setlocal EnableDELAYEDEXPANSION   Rem 设置标志变量 set UAC=0   Rem 获取tasklist命令输出 For /f "usebackq delims==" %%i In (`tasklist /fi "WINDOWTITLE eq 管理员: BAT"`) Do (   set "cmdline=%%i"  set "cmdline=!cmdline:~0,7!"      if "!cmdline!" == "cmd.exe" (    set UAC=1   ) )   if "%UAC%" == "1" ( echo 正在以管理员身份运行当前批处理 ) else ( echo 没有以管理员身份运行当前批处理 )   :End pause exit

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    TClientDataSet如何避免多人更新
    如何用delphi代码修改XML节点
    vc++ pvoid *用delphi怎么表达
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    java怎么实现html转为pdf
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    java怎么实现html转为pdf
    lotus数据列表文档个数如何实时统
    lotus代理中LS如何将字符串保存到
    在lotus BS系统里怎样方便实现统
    网上邻居出现多个pptv多屏互
    xp系统安装了两个计算机管理
    如何批量重命名去除文件名前
    easyui Tree 的json字符串拼
    datagrid在显示Long类型数据
    如何从一个页面控制另一个页
    百度文库显示PPT和word的方法
    iframe里如何获取点击事件
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |