Windows-Anmeldeskript-Startdienst

0

Ich möchte ein Anmeldeskript (Win 10 Pro) erstellen, mit dem der Synergie-Dienst beim Anmelden / Abmelden für einen bestimmten Benutzer gestartet / gestoppt wird.

Problem ist, dass "net start synergy" den Zugriff verweigert 5, da es nicht von erhöhten Benutzer ausgeführt wird.

Also ... 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 erteilen, den Synergy-Dienst zu starten / zu stoppen / anzuhalten

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

Dann habe ich Task Scheduler verwendet und zwei Aufgaben erstellt. Eine Aufgabe wurde durch die Sperre der Arbeitsstation ausgelöst, die andere durch die Sperre der Arbeitsstation (es gibt solche Auslöser !!!). Dann habe ich ein einfaches Shell-Skript erstellt, um den Dienst mit "net stop synergy" zu beenden. Um den Dienst zu starten, habe ich die folgenden Shell-Befehle verwendet:

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

In Bezug auf Subinacl und das Gewähren von Benutzerrechten zum Starten des Dienstes habe ich mich auf diese Ressource verlassen - http://woshub.com/set-permissions-on-windows-service/

Vielen Dank, dass Sie Superuser für die Unterstützung !!!

0xDEAD BEEF
quelle
Wenn Sie den Dienst auf automatisch oder verzögert ändern, sollte er automatisch gestartet werden. Keine Notwendigkeit, irgendetwas zu schreiben.
LPChip
Ich möchte, dass dieser Dienst nur für bestimmte Benutzer gestartet / gestoppt wird.
0xDEAD BEEF

Antworten:

1

Diese Antwort behandelt das Stoppen des Prozesses für den Benutzer. Außerdem können Sie Schritte implementieren, um den Dienst mithilfe des runasBefehls wie gewünscht auszuführen (vorausgesetzt, das Konto "Nicht-Administrator" ist zur Ausführung von Powershell / CMD berechtigt).


Wenn Sie einen lokalen PC verwenden (wie in, Sie sind kein Mitglied einer Domäne), können Sie einen "Task-Zeitplan" für die Anmeldung implementieren und als anderer Benutzer ausführen, was hier erklärt werden kann . Wenn Sie festlegen, dass dieser Dienst als ein anderer Benutzer mit den höchsten Berechtigungen ausgeführt wird, sollten Sie in der Lage sein, den Dienst beim Start zu bearbeiten.

Wenn dies zu schwierig ist (oder der Benutzer, der sich am PC anmeldet, ein Administrator ist), können Sie ein PowerShell-Skript erstellen, das als Administrator ausgeführt werden soll:

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ß, dass Sie sagten, der Benutzer sei kein Administrator, aber dies könnte anderen helfen, weshalb ich es hinzugefügt habe.

Wenn wir sehr 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 (wie im Beispiel, nicht im Nur-Text-Format).


Lokaler Gruppenrichtlinien-Editor

Fügen Sie einfach ein Computer Side Startup / Shutdown-Skript hinzu, um den Dienst aufzurufen und zu beenden:

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

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