Serviço de início de script de logon do Windows

0

Eu quero criar script de login (win 10 pro) que marcaria / pararia o serviço de sinergia no logon / logout para um usuário específico.

O problema é que "net start synergy" dá acesso negado 5, já que não é executado a partir de um usuário elevado.

Então ... existe alguma solução que eu possa usar?!

------------ SOLUÇÃO --------------

Eu usei a ferramenta subinacl (da Microsoft) para conceder ao usuário o direito de iniciar / parar / pausar o serviço Synergy

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

Então usei o Agendador de tarefas e criei duas tarefas. Uma tarefa foi acionada pela estação de trabalho bloquear outro pelo desbloqueio da estação de trabalho (existem esses gatilhos !!!). Então eu criei um shell script simples para parar o serviço com "net stop synergy". Para iniciar o serviço, usei estes comandos do shell:

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

Com relação ao direito de usuário subinacl e de concessão de serviço de lançamento, usei esse recurso - link

Obrigado superusuário pelo suporte !!!

    
por 0xDEAD BEEF 27.01.2018 / 17:39

1 resposta

1

Esta resposta cobrirá a interrupção do processo para o usuário. Ele também permitirá que você implemente as etapas para executar o serviço conforme solicitado, usando o comando runas (supondo que a conta "Non-Admin" esteja autorizada a executar o Powershell / CMD)

Se você estiver usando um PC local (como em, você não é um membro de um domínio), você pode implementar um "Agendamento de tarefa" para Logon, e executar é como outro usuário, o que pode ser explicado aqui . Se você especificar isso para executar " como outro usuário e com os privilégios mais altos, será possível editar o serviço no início.

Se isso for muito difícil (ou o usuário que faz login no PC for um administrador), você poderá elevar um script do PowerShell para ser executado como administrador:

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
}

Fonte

Nota : Eu sei que você disse que o usuário não é um administrador, mas isso poderia ajudar os outros, por isso o adicionei.

Se formos realmente preguiçosos, poderemos usar o comando runas no PowerShell / script em lote que queremos implementar, no entanto, precisaremos armazenar credenciais em um processo seguro (como em não texto simples).

Editor de políticas de grupo local

Basta adicionar um script de inicialização / encerramento do computador para ligar e parar o serviço:

  1. runas para executar o arquivo gpedit.msc ;
  2. Configuração do Computador, Configurações do Windows, Scripts (Inicialização / Desligamento)
  3. Adicione um script predefinido para executar o arquivo:

    runas.exe /user:localhost\Admnistrator net start synergy
    
por 27.01.2018 / 17:50