Wie kann ich Benutzern ohne Administratorrechte erlauben, ein VBS-Skript auszuführen, für das höhere Berechtigungen erforderlich sind?

7

Ich habe ein vbs-Skript, das Endbenutzern bereitgestellt werden muss, aber es erfordert mehr Rechte als auf ihren gesperrten Arbeitsstationen - insbesondere das Aktualisieren einiger HKLM-Registrierungswerte und das Stoppen / Starten eines Windows-Dienstes. Gibt es eine Möglichkeit, wie ich ihnen die Möglichkeit geben kann, das Skript auszuführen, damit es funktioniert? zB Als anderes Benutzerkonto ausführen, ohne dass Benutzer ein anderes Konto haben müssen, um sich als anzumelden?

Das Skript ist nicht Teil eines Anmeldevorgangs. Benutzer, die ein Softwareprodukt testen, können ihre Computer auf eine andere "Umgebung" richten, damit sie zwischen Test- und Live-Umgebungen wechseln können.

UPDATE: Ich bin in Ordnung, wenn die einzige Lösung darin besteht, etwas außerhalb von VBS zu tun, wäre es gut, nur einige Optionen zu haben.

Rory
quelle
1
VBScript kann das nicht unglücklicherweise tun :( Es gibt Programme, um eine Erhöhung zu erzwingen .. aber Sie müssen immer noch das Passwort eingeben .. ist es das, was Sie wollen? Aber tun Sie es still ... nein Warum? Wegen Hackern, die das Leben zur Hölle gemacht haben Bei MS haben wir jetzt all diese Sicherheitslücken. Die einzige Möglichkeit besteht darin, eine .NET-App zu schreiben und sie mit einem UAC-Zertifikat für Ihre Domain / Ihren Computer zu signieren, damit sie sich sicher und leise selbst erhöhen kann ...
Piotr Kula

Antworten:

2

Nicht ohne das Passwort zu verschlüsseln und in das VBS-Skript aufzunehmen.

Es gibt andere Optionen wie Remote-Scripting, diese Einstellungen sind jedoch möglicherweise deaktiviert, je nachdem, ob Sie Teil einer Domain sind.

Ist das Skript Teil eines Anmeldevorgangs?

bearbeiten:

Das Skript ist nicht Teil eines Anmeldevorgangs. Benutzer, die ein Softwareprodukt testen, können ihre Computer auf eine andere "Umgebung" richten, damit sie zwischen Test- und Live-Umgebungen wechseln können.

UPDATE: Ich bin in Ordnung, wenn die einzige Lösung darin besteht, etwas außerhalb von VBS zu tun, wäre es gut, nur einige Optionen zu haben.

Ohne weitere Details besteht die mit Abstand beste Lösung, die ich empfehlen kann, darin, ein separates Benutzerkonto zu erstellen und die ACLs der Registrierungsschlüssel zu ändern, damit dieses Konto diese Schlüssel explizit ändern kann. Führen Sie dann das Skript unter diesem Konto aus. Versuch das.

surfasb
quelle
Ich habe oben nur ein Update hinzugefügt - nicht Teil des Logins, sondern etwas, das Benutzer gelegentlich tun möchten.
Rory
Etwas zum Ausprobieren hinzugefügt.
Surfasb
0

Eine Möglichkeit, dies zu tun, besteht darin, NSSM oder ein ähnliches Tool zu verwenden, um das Skript als Systemdienst auszuführen. Sie können dann die Sicherheit für den Dienst so konfigurieren, dass der Benutzer ihn starten kann, und möglicherweise ein Skript schreiben, das dies für ihn erledigt.

Harry Johnston
quelle
0

Eine programmierorientierte Antwort, aber ich würde einen kleinen .NET Windows-Dienst und eine Clientanwendung schreiben, die sicher über WCF / Remoting kommunizieren können . Der Dienst hört nur die Anforderungen des Clients ab und führt das Skript aus, wenn der Client autorisiert wurde. Der Dienst wird als Konto mit den richtigen Berechtigungen ausgeführt.

BEARBEITEN

In einer ähnlichen Strategie können Sie das Skript als geplante Aufgabe einrichten, die als Benutzer mit der Berechtigung ausgeführt wird, das zu tun, was Sie benötigen. Gewähren Sie Ihren Benutzern dann die Berechtigung zum Ausführen der geplanten Aufgabe. Dazu müssen Sie %SYSTEMROOT%\System32\Tasksdie NTFS-Berechtigungen für die entsprechende Aufgabendatei festlegen.

dsolimano
quelle
Das ist eine Menge Arbeit, um eine Person zu bedienen.
Surfasb
Leider gibt es mehrere Benutzer, die Zugriff darauf benötigen, aber es ist nicht wirklich machbar / ideal, einen Windows-Dienst und -Client zu schreiben und zu installieren, um diese kleine Funktionalität zu unterstützen. Aber gute Idee und ich denke, wenn dies der einzige Weg ist, dann ist es der einzige Weg.
Rory
0

Wenn Sie eine geplante Aufgabe einrichten und Zugriff auf den Befehl "schtasks" haben, um die Aufgabe auszuführen, können Sie sie so einrichten, dass sie als beliebiger Benutzer oder sogar als Systemzugriffsrechte ausgeführt wird, ohne Kennwörter offenzulegen oder erhöhte Zugriffsrechte für eine beliebige Aufgabe zuzulassen Befehl außer dem, den Sie eingerichtet haben. Da es etwas komplizierter ist, ist hier ein Link zu meiner Antwort auf eine andere ähnliche Frage / ein ähnliches Problem: superuser.com/a/903881/229612

CM
quelle
-1

So erteilen Sie Berechtigungen zum Ausführen von Skripten auf dem lokalen Computer

  1. Öffnen Sie in Internet Explorer% windir% \ system32 (z. B. C: \ WINDOWS \ System32).
  2. Klicken Sie im Detailbereich mit der rechten Maustaste auf cmd.exe, und klicken Sie dann auf Eigenschaften.
  3. Klicken Sie im Dialogfeld Eigenschaften von cmd.exe auf der Registerkarte Sicherheit auf Hinzufügen.
  4. Klicken Sie im Dialogfeld Benutzer, Computer oder Gruppen auswählen im Feld Geben Sie die zu wählenden Objektnamen ein.
  5. Geben Sie den Namen des Benutzers ein, dem Sie Berechtigungen erteilen möchten, und klicken Sie dann auf OK.

Aktivieren Sie im Dialogfeld Eigenschaften von cmd.exe auf der Registerkarte Sicherheit im Feld Berechtigungen für Administratoren das Kontrollkästchen Zulassen für Lesen und Ausführen, und klicken Sie dann auf OK.

Ronald
quelle
Würde dies nicht zu einem größeren Sicherheitsproblem führen?
Dave M
Das OP fragt nicht nach der Erlaubnis zum Ausführen von Skripten, sondern danach, die Dinge so anzuordnen, dass die Skripte im Administratorkontext ausgeführt werden. Außerdem ist das Ändern der Berechtigungen cmd.exenur eine Möglichkeit, den Befehlszeilenzugriff zu sperren, und (wahrscheinlich) nicht einmal die häufigste.
Harry Johnston