gpt4 book ai didi

windows - 批处理脚本 : how to check for admin rights

转载 作者:可可西里 更新时间:2023-11-01 11:51:34 25 4
gpt4 key购买 nike

如何查看当前批处理脚本是否有管理员权限?

我知道如何让它用 runas 调用自己,但不知道如何检查管理员权限。我见过的唯一解决方案是粗糙的黑客工作或使用外部程序。好吧,实际上我不在乎这是否是一项 hack 工作,只要它能在 Windows XP 和更新版本上运行即可。

最佳答案

问题

blak3r/Rushyo的解决方案适用于 Windows 8 以外的所有系统。在 Windows 8 上运行 AT 会导致:

The AT command has been deprecated. Please use schtasks.exe instead.

The request is not supported.

(参见屏幕截图 #1)并将返回 %errorLevel% 1

研究

因此,我开始寻找其他需要提升权限的命令。 rationallyparanoid.com有一些命令的列表,所以我在当前 Windows 操作系统(XP 和 8)的两个相反的极端上运行每个命令,希望找到一个在使用标准权限运行时将被拒绝在两个操作系统上访问的命令。

最终,我确实找到了一个 - NET SESSION。一个真实、干净、通用的解决方案,不涉及:

  • 在安全位置创建数据或与数据交互
  • 分析从 FOR 循环返回的数据
  • 搜索“Administrator”的字符串
  • 使用 AT(不兼容 Windows 8)或 WHOAMI(不兼容 Windows XP)。

每个都有自己的安全性、可用性和可移植性问题。

测试

我已经独立确认这适用于:

  • Windows XP,x86
  • Windows XP,x64
  • Windows Vista,x86
  • Windows Vista,x64
  • Windows 7,x86
  • Windows 7,x64
  • Windows 8,x86
  • Windows 8,x64
  • Windows 10 v1909,x64

(见截图#2)

实现/使用

因此,要使用此解决方案,只需执行如下操作:

@echo off
goto check_Permissions

:check_Permissions
echo Administrative permissions required. Detecting permissions...

net session >nul 2>&1
if %errorLevel% == 0 (
echo Success: Administrative permissions confirmed.
) else (
echo Failure: Current permissions inadequate.
)

pause >nul

解释

NET SESSION 是用于 "manage server computer connections. Used without parameters, [it] displays information about all sessions with the local computer." 的标准命令

所以,这是我给定实现的基本过程:

  1. @echo 关闭
    • 禁止显示命令
  2. goto check_Permissions
    • 跳转到:check_Permissions代码块
  3. net session >nul 2>&1
    • 运行命令
    • 隐藏命令的视觉输出
      1. 将标准输出(数字句柄 1/STDOUT)流重定向到 nul
      2. 将标准错误输出流(数字句柄 2/STDERR)重定向到与数字句柄 1 相同的目的地
  4. 如果 %errorLevel% == 0
    • 如果退出代码 (%errorLevel%) 的值 0 那么这意味着没有发生错误,因此,上一个命令成功
  5. 其他
    • 如果退出代码 (%errorLevel%) 的值不是 0 那么这意味着发生了错误,因此,上一个命令未成功运行
  6. 括号内的代码将根据满足的条件执行

截图

Windows 8 AT %errorLevel% :

[imgur]

NET SESSION on Windows XP x86 - Windows 8 x64 :

[imgur]

@Tilka,谢谢你把你接受的答案改成我的。 :)

关于windows - 批处理脚本 : how to check for admin rights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com