【发布时间】:2017-11-24 12:11:58
【问题描述】:
我正在尝试为“任务计划程序”的“非管理员”用户授予一些权限。
如果你执行这个命令:
PS > C:\Windows\System32\sc.exe queryex type= service state=all
可以发现“Task Scheduler”服务名称为“Scheduler”:
SERVICE_NAME: Schedule
DISPLAY_NAME: Task Scheduler
然后我尝试运行简单的命令来显示现有权限:
PS >.\subinacl.exe /Service Schedule /display=dacl
试图授予一些权利:
PS >.\subinacl.exe /Service Schedule /grant=NonAdmin=R
但是两个命令都抛出访问被拒绝:
Schedule - OpenService Error : 5 Access is denied.
Elapsed Time: 00 00:00:00
Done: 1, Modified 0, Failed 1, Syntax errors 0
Last Done : Schedule
Last Failed: Schedule - OpenService Error : 5 Access is denied.
我的环境: 操作系统:Windows 8.1 企业版; 工作组:连接到域(也在未连接到域的 VM 上尝试过 - 相同的访问被拒绝);我是管理员;我以管理员身份运行 PowerShell。
我如何解决这个“拒绝访问”问题并为“任务计划程序”的非管理员用户授予一些权限?
2017 年 11 月 28 日更新:
在RbMm的帮助下,我授予了使用权限,他现在可以创建新的计划任务了。 还有一个问题是他无法删除/移除创建的任务。 我将所有大部分赠款都授予用户:
"(A;;GAGRGWGXRCSDCCDCLCSWRPWPDTLOCRSDRCFAFRFWFX;;;<USER_SID>)"
但我在尝试删除/移除计划任务时仍然收到此错误:
The error returned is: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
注意事项:
- 这是域用户。
- 我尝试为该用户授予 %windir%\Tasks 权限,但没有帮助。
我错过了什么,为什么用户不能删除任务?
【问题讨论】:
-
这是
subinacl.exe中的错误 - 不是使用READ_CONTROL|WRITE_DAC访问打开服务,而是尝试使用GENERIC_ALL|ACCESS_SYSTEM_SECURITY打开它,结果访问被拒绝。可以使用 winapi 自己实现此任务 -
“winapi”-> sc 命令是什么意思?一个如何向 MS 报告错误,他们会修复它 :),但我上次看到它是在 2012 年更新的,所以不太希望它会被修复......
-
我的意思是你自己做这个,作为程序员。所以打电话给
OpenSCManager,OpenService,QueryServiceObjectSecurity,SetServiceObjectSecurity,CloseServiceHandle。subinacl.exe的问题是它尝试使用GENERIC_ALL访问权限打开服务。但schedule未授予管理员完全访问权限 - 结果访问被拒绝。 -
真的在
schedule管理员没有下一次访问 -DELETE|SERVICE_STOP|SERVICE_CHANGE_CONFIG- 你可以在管理工具的 services 管理单元中查看说,你不能更改启动类型,或者与大多数其他服务不同,停止此服务。但是很容易通过使用 winapi 以正确的访问权限打开此服务 -READ_CONTROL(需要查询)+WRITE_DAC(需要更改安全性) - 管理员同时拥有此访问权限
标签: windows scheduled-tasks grant subinacl