[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]批处理通过 CALL 调用不能继承权限?

本帖最后由 cntanglang 于 2021-10-8 09:43 编辑

在一个脚本中通过 CALL 调用另一个脚本

主脚本代码
  1. %1 mshta.exe vbscript:createobject("shell.application").shellexecute("""%~f0""","::",,"runas",1)(window.close)&&exit
  2. CALL DOALL.BAT "DO_FILE.TXT" "File" 1> "LOG\DO_FILE_%DATE:~-2,2%.LOG" 2>&1
复制代码
子脚本代码
  1. echo off
  2. ECHO %time%
  3. if exist "%~1" (
  4. setlocal EnableDelayedExpansion
  5. for /f "usebackq delims== tokens=1,2" %%a in ("%~1") do (
  6. ECHO %%a
  7. ECHO %%b
  8. ATTRIB -S -H "%%b"
  9. RD /S /Q "%%b.Ray"
  10. MOVE /Y "%%b" "%%b.Ray"
  11. if /i "%~2" == "FILE" ( DODODO "%%b" "Z:\TEMP\%%a.Ray" )
  12. ECHO "-----------------------------------------------------------"
  13. )
  14. )
  15. ECHO %time%
复制代码
现在的结果是:

1、如果在登录系统后,用管理员身份运行主脚本,一切正常;
2、如果将主脚本加入系统策略-脚本(启动)中,则出现错误: 【你没有足够的权限执行此操作。】  —— 虽然我已经在主脚本加入了提权代码

请求大神指点:
1、是我的提权代码有问题?
2、还是通过 CALL 调用不能继承权限?
3、我应该怎么处理?
多谢多谢





----------------------------------------------
使用 whoami 命令测试,发现调用者是 System 身份
本就属于管理员组,但在启动时具有的特权中,被系统刻意忽略了 SeCreateSymbolicLinkPrivilege 权限
哪怕在安全策略中配置这个权力给 System ,也同样被忽视。
后查询到一篇外文,提及Window8后的系统在启动过程中会可以去掉部分权限,其中就包含这个权限。

不过有意思的是:在启动中调用 MKLINK 的话 —— 针对文件的MKLINK会提示无权,但针对文件夹的则会成功。 双标还是BUG呢?

通过测试,在 系统策略-脚本(启动) 中运行主脚本,所具有的权限为:nt authority\system 的权限。
后续出现无权限提示也是因为这个原因。

请教各位大神: 在这个阶段应该如何提升权限呢? 多谢多谢

TOP

回复 2# cntanglang

用下面这段看看:

@echo off
cd /d "%~dp0
%1 %2
ver|find "5.">nul&&goto :Admin
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",1)(window.close)&goto :eof
:Admin
CALL DOALL.BAT "DO_FILE.TXT" "File" 1> "LOG\DO_FILE_%DATE:~-2,2%.LOG" 2>&1

或者创建BAT快捷方式,直接运行快捷方式就没事。

TOP

返回列表