Board logo

标题: [其他] [分享]以管理员身份运行批处理路径包含特殊字符的情况 [打印本页]

作者: Batcher    时间: 2023-11-14 14:10     标题: [分享]以管理员身份运行批处理路径包含特殊字符的情况

【问题描述】

实验环境:


绝大部分情况下,使用以下代码可以实现双击bat脚本直接以管理员身份运行。
不需要右键单击bat脚本,再选择“以管理员身份运行”。
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""%~f0""","::",,"runas",1)(close) & exit /b
  3. echo Got administrator privilege.
  4. REM 根据实际需要修改下面待执行的命令
  5. fltmc
  6. pause
复制代码
但是,当bat脚本的文件名或其所在目录名称里面包含&等特殊字符的时候,上述代码会出错。
作者: Batcher    时间: 2023-11-14 14:10

【解决方案】
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""cmd""","/c """"%~f0"""" ::",,"runas",1)(close) & exit /b
  3. echo Got administrator privilege.
  4. REM 根据实际需要修改下面待执行的命令
  5. fltmc
  6. pause
复制代码

作者: hnfeng    时间: 2023-11-15 14:37

本帖最后由 hnfeng 于 2023-11-15 14:44 编辑

谢谢分享,但是有一问题:
貌似不能再使用 %~nx0 之类的东东了
下面代码保存为 test(a) &admin.bat
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""cmd""","/c """"%~f0"""" ::",,"runas",1)(close) & exit /b
  3. title %~nx0
  4. ::echo %~nx0
  5. fltmc
  6. pause
复制代码
不管是 title %~nx0 或者 echo %~nx0,都会出现错误信息(就是 & 后面的内容当做命令来运行了,当然是找不到文件,不过如果真的有这个系统命令或可执行文件,就意外了)
也不管 title %~nx0 是在 mshta 行之前或之后,都有错误提示
另外虽然有这个错误提示,但是仍然取得了权限。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2