是否可以以特定用户身份在任务计划程序中运行 CMD 脚本,而无需签入选项“以最高权限运行”?
简单测试:
- 创造D:\Admin\Scripts\TestScripts\testscript.cmd
- 脚本非常简单:
echo success > D:\Admin\Scripts\TestScripts\out.txt
- 授予用户完全权限mydoman\管理员(当服务器是域成员时,域管理员组的成员包含在本地管理员组中)D:\Admin\Scripts\TestScripts以及所有子目录和文件
- 创建带有操作的任务:
- 命令:
D:\Admin\Scripts\TestScripts\testscript.cmd
- 开始于:
D:\Admin\Scripts\TestScripts
- 命令:
- 更改用户为mydoman\管理员
- 选择“无论用户是否登录都运行”
- 请勿选择“以最高权限运行”
- OK,输入密码,完成
手动启动任务,并以代码 0x1 结束。
如果我选中“以最高权限运行”选项,它就可以运行。输出文件文件已创建。
使用参数创建任务时效果相同:
- 命令:
cmd.exe
- 参数:
/c D:\Admin\Scripts\TestScripts\testscript.cmd
- 开始于:
D:\Admin\Scripts\TestScripts
问题是:
- 是否必须选中“以最高权限运行”?
- CMD 脚本可以在没有最高权限的情况下运行吗?
- MS 是否有任何文章清楚地解释如何以及为何在任务计划程序中运行 CMD 文件?
答案1
这是 UAC 开始发挥作用。长话短说,您需要为给定用户提供对目标目录的写访问权限,而不依赖于用户的管理员组成员身份。
例如:如果当前目录的 ACL 是:
Administrators:(OI)(CI)(F)
SYSTEM:(OI)(CI)(F)
Authenticated Users:(OI)(CI)(RX)
...您需要添加直接 ACL 条目,例如:用户名:(OI)(CI)(男)或用户所属组的 ACL 条目。
原因是,UAC 阻止了管理员组有任何影响,无需事先提升。这是设计使然。
我希望这是有道理的。
答案2
- 不
- 是的
只要运行任务的(管理员)用户可以在正常的非提升的命令提示符上执行相同的操作,它也应该通过任务计划程序工作。
您的管理员用户很可能需要提升权限才能在该目录中写入文件。因此,通过任务也是如此。
“以最高权限运行”只是告诉任务调度程序在执行命令之前先提升用户权限。
尝试在“用户”具有写权限的目录中写入文件,无需“最高权限”即可工作