Windows 登录脚本启动服务

Windows 登录脚本启动服务

我想创建登录脚本(win 10 pro),在特定用户登录/注销时启动/停止协同服务。

问题在于“net start synergy”拒绝访问 5,因为它不是从提升的用户执行的。

那么... 有什么我可以采用的解决方法吗?!

- - - - - - 解决方案 - - - - - - -

我使用 subinacl 工具(来自 Microsoft)授予用户启动/停止/暂停 Synergy 服务的权限

subinacl.exe /service Synergy /grant=KitchenComputer\reinis-ubnt=PTO

然后我使用任务计划程序并创建了两个任务。一个任务由工作站锁定触发,另一个由工作站解锁触发(有这样的触发器!!!)。然后我创建了简单的 shell 脚本,使用“net stop synergy”停止服务。要启动服务,我使用了以下 shell 命令:

if %username% == reinis-ubnt (
net start Synergy
)

关于 subinacl 并授予用户启动服务的权利,我依赖于此资源 -http://woshub.com/set-permissions-on-windows-service/

感谢超级用户的支持!!!

答案1

本回答将介绍如何停止用户进程。它还将允许您使用命令runas(假设“非管理员”帐户有权执行 Powershell/CMD)按要求执行运行服务的步骤


如果您使用的是本地 PC(例如,您不是域成员),则可以为登录实施“任务计划”,并以另一个用户身份执行,这可以解释这里. 如果您指定此运行“作为另一个用户,并且具有最高权限,您应该能够在启动时编辑该服务。

如果这太困难(或者登录 PC 的用户是管理员),您可以提升 PowerShell 脚本以管理员身份运行:

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))

{   
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}

来源

笔记: 我知道说该用户不是管理员,但这可以帮助其他人,这就是我添加它的原因。

如果我们真的很懒,我们可以runas在想要实现的 PowerShell/批处理脚本中使用该命令,但是需要在安全进程中存储凭据(例如,不是纯文本)。


本地组策略编辑器

只需添加计算机端启动/关闭脚本即可调用和停止服务:

  1. runas运行该gpedit.msc文件;
  2. 计算机配置、Windows 设置、脚本(启动/关机)
  3. 添加预定义脚本来执行文件:

    runas.exe /user:localhost\Admnistrator net start synergy
    

相关内容