Windows Server 2008 任务计划程序中的 .cmd,无最高权限

Windows Server 2008 任务计划程序中的 .cmd,无最高权限

是否可以以特定用户身份在任务计划程序中运行 CMD 脚本,而无需签入选项“以最高权限运行”?

简单测试:

  1. 创造D:\Admin\Scripts\TestScripts\testscript.cmd
  2. 脚本非常简单:echo success > D:\Admin\Scripts\TestScripts\out.txt
  3. 授予用户完全权限mydoman\管理员(当服务器是域成员时,域管理员组的成员包含在本地管理员组中)D:\Admin\Scripts\TestScripts以及所有子目录和文件
  4. 创建带有操作的任务:
    • 命令:D:\Admin\Scripts\TestScripts\testscript.cmd
    • 开始于:D:\Admin\Scripts\TestScripts
  5. 更改用户为mydoman\管理员
  6. 选择“无论用户是否登录都运行”
  7. 请勿选择“以最高权限运行”
  8. OK,输入密码,完成

手动启动任务,并以代码 0x1 结束。

如果我选中“以最高权限运行”选项,它就可以运行。输出文件文件已创建。

使用参数创建任务时效果相同:

  • 命令:cmd.exe
  • 参数:/c D:\Admin\Scripts\TestScripts\testscript.cmd
  • 开始于:D:\Admin\Scripts\TestScripts

问题是:

  1. 是否必须选中“以最高权限运行”?
  2. CMD 脚本可以在没有最高权限的情况下运行吗?
  3. MS 是否有任何文章清楚地解释如何以及为何在任务计划程序中运行 CMD 文件?

答案1

这是 UAC 开始发挥作用。长话短说,您需要为给定用户提供对目标目录的写访问权限,而不依赖于用户的管理员组成员身份。

例如:如果当前目录的 ACL 是:

Administrators:(OI)(CI)(F)
SYSTEM:(OI)(CI)(F)
Authenticated Users:(OI)(CI)(RX)

...您需要添加直接 ACL 条目,例如:用户名:(OI)(CI)(男)或用户所属组的 ACL 条目。

原因是,UAC 阻止了管理员组有任何影响,无需事先提升。这是设计使然。

我希望这是有道理的。

答案2

  1. 是的

只要运行任务的(管理员)用户可以在正常的非提升的命令提示符上执行相同的操作,它也应该通过任务计划程序工作。

您的管理员用户很可能需要提升权限才能在该目录中写入文件。因此,通过任务也是如此。

“以最高权限运行”只是告诉任务调度程序在执行命令之前先提升用户权限。

尝试在“用户”具有写权限的目录中写入文件,无需“最高权限”即可工作

相关内容