标题: [系统相关] [已解决]批处理通过 CALL 调用不能继承权限? [打印本页]
作者: cntanglang 时间: 2021-10-4 16:16 标题: [已解决]批处理通过 CALL 调用不能继承权限?
本帖最后由 cntanglang 于 2021-10-8 09:43 编辑
在一个脚本中通过 CALL 调用另一个脚本
主脚本代码- %1 mshta.exe vbscript:createobject("shell.application").shellexecute("""%~f0""","::",,"runas",1)(window.close)&&exit
-
- CALL DOALL.BAT "DO_FILE.TXT" "File" 1> "LOG\DO_FILE_%DATE:~-2,2%.LOG" 2>&1
复制代码
子脚本代码- echo off
-
- ECHO %time%
-
- if exist "%~1" (
-
- setlocal EnableDelayedExpansion
-
- for /f "usebackq delims== tokens=1,2" %%a in ("%~1") do (
-
- ECHO %%a
- ECHO %%b
-
- ATTRIB -S -H "%%b"
- RD /S /Q "%%b.Ray"
- MOVE /Y "%%b" "%%b.Ray"
-
- if /i "%~2" == "FILE" ( DODODO "%%b" "Z:\TEMP\%%a.Ray" )
-
- ECHO "-----------------------------------------------------------"
- )
-
- )
- ECHO %time%
复制代码
现在的结果是:
1、如果在登录系统后,用管理员身份运行主脚本,一切正常;
2、如果将主脚本加入系统策略-脚本(启动)中,则出现错误: 【你没有足够的权限执行此操作。】 —— 虽然我已经在主脚本加入了提权代码
请求大神指点:
1、是我的提权代码有问题?
2、还是通过 CALL 调用不能继承权限?
3、我应该怎么处理?
多谢多谢
----------------------------------------------
使用 whoami 命令测试,发现调用者是 System 身份
本就属于管理员组,但在启动时具有的特权中,被系统刻意忽略了 SeCreateSymbolicLinkPrivilege 权限
哪怕在安全策略中配置这个权力给 System ,也同样被忽视。
后查询到一篇外文,提及Window8后的系统在启动过程中会可以去掉部分权限,其中就包含这个权限。
不过有意思的是:在启动中调用 MKLINK 的话 —— 针对文件的MKLINK会提示无权,但针对文件夹的则会成功。 双标还是BUG呢?
作者: cntanglang 时间: 2021-10-4 17:26
通过测试,在 系统策略-脚本(启动) 中运行主脚本,所具有的权限为:nt authority\system 的权限。
后续出现无权限提示也是因为这个原因。
请教各位大神: 在这个阶段应该如何提升权限呢? 多谢多谢
作者: yakeyun 时间: 2021-10-4 18:21
回复 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快捷方式,直接运行快捷方式就没事。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |