Führen Sie das Ruby-Skript im erhöhten Modus aus

8

Ich muss ein Ruby-Skript im erhöhten Modus (Admin priviledges) unter Windows ausführen. Ist es möglich?

    
Ricardo Acras 25.11.2011, 11:04
quelle

4 Antworten

10

So geht's. Der einfachste Weg besteht darin, Ihre ausführbare Datei mit erweiterten Rechten (Admin) unter Verwendung von ShellExecute neu zu starten.

Mit Ruby machst du das so:

%Vor%

Wenn Sie die Windows-Benutzerkontensteuerung aktiviert haben, erhalten Sie den bekannten Windows-Popup-Dialog, der Administratorrechte anfordert. Sobald Sie auf Ja klicken, wird Ihr Prozess mit Administratorrechten ausgeführt.

Der geheime Trick hier ist die Verwendung des nicht dokumentierten ShellExecute Operationsparameters runas , der die angeforderte Operation erhöht.

Ссылка

Auch eine Diskussion darüber, wie man eine Tastaturkürzel mit erhöhten Eingabeaufforderungen manuell erstellen kann (was in einigen Fällen eine ausreichend gute Lösung sein könnte):

Ссылка

    
Casper 01.12.2011, 02:56
quelle
2

Ich möchte Casper und thegreendroid für diese modifizierte Lösung danken.

Ich konnte ihre Beispiele nicht zum Laufen bringen, aber mit etwas mehr Forschung habe ich das zusammengefügt. Ich habe ein bisschen nach execute_command gesucht, da meine Installation von ruby ​​1.9.3 nicht wusste, was ich damit machen sollte, und ich konnte nichts finden, also benutzte ich Backticks. Das \ musste mit Escapezeichen versehen werden. Das 2>&1 Bit ist so, dass ruby ​​die Ausgabe statt einer leeren Zeichenfolge erhält und wenn diese Ausgabe mit der Regexp /ERROR/ übereinstimmt, dann haben Sie keine Administratorrechte, also wollen wir, dass sie nil zurückgibt.

Dies wird sich mit administrativen Privilegien neu starten und dann laden, was auch immer Sie in den require mit dem Kommentar nach ihm setzen.

%Vor%

Sie können den Block def löschen und die Anweisung if in

ändern %Vor%

der Kürze wegen. Sie könnten auch die Variable shell verlieren:

%Vor%

Möglicher Gotcha: Dies könnte eine Endlosschleife sein, wenn running_in_admin_mode? wiederholt fehlschlägt, aber es hat perfekt für mich funktioniert.

    
RaumDellamorte 22.08.2013 11:49
quelle
2

Dank anderer Autoren bin ich damit zur Arbeit gekommen (getestet auf Windows 8):

Fügen Sie dies am Anfang eines Ruby-Skripts hinzu:

%Vor%

Oder Sie könnten einfach eine launcher.cmd mit

haben %Vor%

und starten Sie diese CMD-Datei mit Administratorrechten

Sobald du mit Ruby getestet hast, kannst du Rubyw ausprobieren

    
Rivenfall 15.01.2015 00:28
quelle
1

Eine andere Methode besteht darin, sicherzustellen, dass Sie Ihr Skript nicht im Nicht-Admin-Modus ausführen. Ich habe festgestellt, dass diese Lösung meiner Erfahrung nach zufriedenstellend ist.

Es kann festgestellt werden, ob ein Skript im Admin-Modus läuft -

%Vor%

Der Dank geht an Peter McEvoy für seine Antwort hier

    
thegreendroid 24.10.2012 03:22
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123canvas ___ Canvas ist ein generisches Element für die Ausgabe von Grafiken in freier Form. ___ qstntxt ___ ___ answer8217323 ___

Ich habe ein Beispiel dafür erstellt. Ich benutze Bresenhams Linienalgorithmus , um die Linie von ganzen Leinwandpixeln zu durchlaufen und das Alpha an jedem Punkt zu überprüfen; Wann immer es einen Schwellenwert überschreitet, nehme ich das als Kandidat auf. Ich verwende dann die ersten und letzten solcher Punkte, um einen Pfeil (mit richtig gedrehter Pfeilspitze) zu zeichnen.

Hier ist das Beispiel: Ссылка

Aktualisieren Sie das Beispiel, um einen neuen zufälligen Testfall zu sehen. Es 'scheitert', wenn Sie eine andere 'Form' haben, die bereits einen der Endpunkte überlappt. Eine Möglichkeit, dies zu lösen, wäre, Ihre Formen zuerst auf eine leere Leinwand zu zeichnen und dann das Ergebnis ( %code% ) auf die endgültige Leinwand zu kopieren.

Für Stack-Überlauf-Nachfahren (für den Fall, dass meine Seite nicht erreichbar ist) ist hier der relevante Code:

%Vor%     
___ tag123html5 ___ HTML5 (Hyper Text Markup Language, Version 5) ist ein Oberbegriff für aktuelle Webtechnologien. Es ist auch die neueste Version von HTML. Im Oktober 2014 wurde es zu einer W3C-Empfehlung, die neue Elemente und APIs einführte. ___