Windows-Anmeldeskript-Startdienst

827
0xDEAD BEEF

Ich möchte ein Anmeldeskript erstellen (win 10 pro), das den Synergiedienst beim Anmelden / Abmelden für einen bestimmten Benutzer aktivieren / stoppen würde.

Problem ist, dass "Net Start Synergy" Zugriff verweigert 5, da es nicht von einem erhöhten Benutzer ausgeführt wird.

Gibt es eine Problemumgehung, die ich verwenden könnte ?!

------------ LÖSUNG --------------

Ich habe das subinacl-Tool (von Microsoft) verwendet, um dem Benutzer das Recht zu geben, den Synergy-Dienst zu starten / stoppen / pausieren

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

Dann habe ich Task Scheduler verwendet und zwei Aufgaben erstellt. Eine Aufgabe wurde durch eine Workstation-Sperre ausgelöst, andere durch das Entsperren der Workstation (es gibt solche Auslöser !!!). Dann habe ich ein einfaches Shell-Skript erstellt, um den Dienst mit "net stop synergy" zu stoppen. Zum Starten des Dienstes habe ich folgende Shellbefehle verwendet:

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

In Bezug auf subinacl und die Erteilung von Benutzerrechten zum Starten des Dienstes habe ich mich auf diese Ressource verlassen - http://woshub.com/set-permissions-on-windows-service/

Danke Superuser für die Unterstützung !!!

0
Wenn Sie den Dienst in automatisch oder verzögert ändern, sollte er automatisch gestartet werden. Keine Notwendigkeit, etwas zu schreiben. LPChip vor 6 Jahren 0
Ich möchte, dass dieser Dienst nur für bestimmte Benutzer gestartet / beendet wird. 0xDEAD BEEF vor 6 Jahren 0

1 Antwort auf die Frage

1
ThisIsNotMyRealName

Diese Antwort umfasst das Stoppen des Prozesses für den Benutzer. Sie können außerdem Schritte ausführen, um den Dienst wie gewünscht mit dem runasBefehl auszuführen (vorausgesetzt, das Konto "Nicht-Admin" ist berechtigt, Powershell / CMD auszuführen).


Wenn Sie einen lokalen PC verwenden (z. B. sind Sie kein Mitglied einer Domäne), können Sie einen "Task-Zeitplan" für die Anmeldung implementieren und als einen anderen Benutzer ausführen, was hier erklärt werden kann . Wenn Sie angeben, dass dies als ein anderer Benutzer mit höchsten Berechtigungen ausgeführt werden soll, sollten Sie den Dienst beim Start bearbeiten können.

Wenn dies zu schwierig ist (oder der Benutzer, der sich am PC anmeldet, ein Administrator ist), können Sie ein PowerShell-Skript zur Ausführung als Administrator erhöhen:

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 } 

Quelle

Hinweis : Ich weiß, Sie sagten, dass der Benutzer kein Administrator ist, aber dies könnte anderen helfen, weshalb ich es hinzugefügt habe.

Wenn wir wirklich faul sind, können wir den runasBefehl innerhalb des PowerShell / Batch-Skripts verwenden, das wir implementieren möchten. Die Anmeldeinformationen müssen jedoch in einem sicheren Prozess gespeichert werden (z. B. nicht in Klartext).


Lokaler Gruppenrichtlinien-Editor

Fügen Sie einfach ein Skript zum Starten und Herunterfahren des Computers hinzu, um den Dienst aufzurufen und zu beenden:

  1. runasum die gpedit.mscDatei auszuführen
  2. Computerkonfiguration, Windows-Einstellungen, Skripts (Starten / Herunterfahren)
  3. Hinzufügen eines vordefinierten Skripts zum Ausführen der Datei:

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