我正在尝试编写一个在服务器上作为本地用户运行的应用程序,并且需要访问枚举服务,甚至可能控制它们(启动/停止).
作为管理员组的一部分,该用户能够访问此功能(通过ServiceController类使用)的唯一方式是什么?如果更容易,我甚至可以枚举服务列表(交互式启动/停止不是显示停止).将用户添加到高级用户的小组是否有效?
谢谢!
Power Users组永远不是答案.这是一件古老的遗产.最好只考虑它不存在.
如果您想以精细的方式设置各个Windows服务的权限,您可以,但它远不如设置文件权限那么容易/直观
要查看Windows服务的当前权限,请执行以下操作:
C:\Users\Ryan>sc sdshow netlogon D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)
例如,要设置单个Windows服务的权限,以便非管理员用户可以启动和停止特定服务:
sc sdset netlogon "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2103278432-2794320136-1883075150-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)" [SC] SetServiceObjectSecurity SUCCESS
那看起来很可怕,不是吗?该goo被称为SDDL – 安全描述符定义语言.
This article是关于如何解释SDDL并做你想做的事情的非常好的入门读物.
您还可以使用安全模板和组策略来完成同样的事情: