Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Dienst starten/ Dienst beenden - ohne sichtbares Fenster (Powershell)
- Ersteller o0Julia0o
- Erstellt am
F
findichgut
Gast
2 Dateien anlegen mit Dateiendung *.bat. In eine "net start OVRService" (ohne""). In die andere "net stop OVRService" reinschreiben und auf dem Desktop ablegen.
- Registriert
- Dez. 2012
- Beiträge
- 2.782
Wer ein ähnliches Problem hat, nochmal ein kleiner Bericht:
Das Ergebnis ist folgendes - funktioniert also nicht:
-> batch als Amdinistrator auführen, dann funktioniert es!
danke euch Azereus & finichgut!
Jetzt möchte ich noch ein Programm aufrufen, nachdem der Befehlt ausgeführt wurde. Doch erstmal muß gewartet werden bis der Dienst gestartet wurde. Wie bekomme ich eine Pause hin? Per timeout wird das im CMD-Fenster angezeigt. Ich möchte es aber komplett unsichtbar ausführen. Geht das besser mit Powershell?
Außerdem bleibt das CMD-Fenster solange geöffnet, wie ich die Anwendung dann offen habe. Das Fenster soll geschlossen werden & erst gar nicht auftauchen.
O.k., der wartet eh, bis der Dienst gestartet ist:
Trotzdem habe ich das Problem, dass das CMD-Fenster angezeigt wird & offen bleibt.
Das geht zwar weg mit dem Tool batToExe-Converter. Jedoch muß ich dann, weil ich das Admin-flag benötige, jedes mal beim Start 2 Extraklicks machen, umd zu bestätigen, dass ich die Datei wirklich als Administrator auführen möchte. Das sollte mit Powershell besser gehen - aber wie?
Code:
@echo off
net start OVRService
pause
-> batch als Amdinistrator auführen, dann funktioniert es!
danke euch Azereus & finichgut!
Jetzt möchte ich noch ein Programm aufrufen, nachdem der Befehlt ausgeführt wurde. Doch erstmal muß gewartet werden bis der Dienst gestartet wurde. Wie bekomme ich eine Pause hin? Per timeout wird das im CMD-Fenster angezeigt. Ich möchte es aber komplett unsichtbar ausführen. Geht das besser mit Powershell?
Code:
@echo off
net start OVRService
timeout /T 10 /nobreak
D:\Oculus\Support\oculus-client\OculusClient.exe
exit
Außerdem bleibt das CMD-Fenster solange geöffnet, wie ich die Anwendung dann offen habe. Das Fenster soll geschlossen werden & erst gar nicht auftauchen.
O.k., der wartet eh, bis der Dienst gestartet ist:
Code:
@echo off
net start OVRService
D:\Oculus\Support\oculus-client\OculusClient.exe
net stop OVRService
exit
Das geht zwar weg mit dem Tool batToExe-Converter. Jedoch muß ich dann, weil ich das Admin-flag benötige, jedes mal beim Start 2 Extraklicks machen, umd zu bestätigen, dass ich die Datei wirklich als Administrator auführen möchte. Das sollte mit Powershell besser gehen - aber wie?
Zuletzt bearbeitet:
A
A d00d
Gast
Wüsste nicht wie man die Problematik mit PS umgehen kann. Solche Scripts müssen in so einem Fall als Admin gestartet werden, oder sich selber nochmal als Admin aufrufen, was aber auch mit Batch machbar ist. Schnell, schick und realtiv unkompliziert, könntest Du dir mittels NSIS + SimpleService-Plugin so einen Launcher basteln. So bleiben dann auch keine hässlichen Konsolenfenster offen. Ein entsprechendes Compiling-Script könnte so aussehen:
Das Erkennen der executable location wird in deinem Fall wohl so nicht funktionieren. Den Registry-Pfad wirst du da anpassen müssen. Im Zweifel kannst du die Funktion aber auch einfach rausnehmen, und wie in deiner Batch den Pfad selber angeben. Wenn dir das dann doch zuviel ist, sollte es reichen, dein Batchfile wie folgt zu beginnen:
Code:
SetCompressor LZMA
Function .onInit
ReadRegStr $INSTDIR HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\OculusClient.exe" "Path"
IfFileExists $INSTDIR\OculusClient.exe A 0
SetRegView 64
ReadRegStr $INSTDIR HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\oodcmd.exe" "Path"
IfFileExists $INSTDIR\OculusClient.exe A 0
MessageBox MB_OK "Can't locate OculusClient.exe)"
Quit
A:
FunctionEnd
Section
simpleSC::Start "OVRservice"
ExecWait "$INSTDIR\OculusClient.exe"
simpleSC::Stop "OVRservice"
Quit
SectionEnd
Icon oculus.ico
SilentInstall Silent
OutFile "Oculus_Launcher.exe"
RequestexecutionLevel admin
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
VIProductVersion 1.0.0.0
VIAddVersionKey /LANG=${LANG_ENGLISH} FileVersion ""
VIAddVersionKey /LANG=${LANG_ENGLISH} CompanyName "Jule"
VIAddVersionKey /LANG=${LANG_ENGLISH} Productversion 1.0
VIAddVersionKey /LANG=${LANG_ENGLISH} ProductName "Oculus Launcher "
VIAddVersionKey /LANG=${LANG_ENGLISH} FileDescription "Oculus Launcher "
VIAddVersionKey /LANG=${LANG_ENGLISH} LegalCopyright ""
Name "Oculus Launcher "
Das Erkennen der executable location wird in deinem Fall wohl so nicht funktionieren. Den Registry-Pfad wirst du da anpassen müssen. Im Zweifel kannst du die Funktion aber auch einfach rausnehmen, und wie in deiner Batch den Pfad selber angeben. Wenn dir das dann doch zuviel ist, sollte es reichen, dein Batchfile wie folgt zu beginnen:
Code:
@echo off & whoami /groups | find "S-1-16-12288" >nul || (
echo createobject("shell.application"^).shellexecute"%~s0",,,"runas"^&createobject("scripting.filesystemobject"^).getfile("%tmp%\uac.vbs"^).delete> "%tmp%\uac.vbs"
start "" "%tmp%\uac.vbs"&exit
)
- Registriert
- Dez. 2012
- Beiträge
- 2.782
oh danke, a d00d. Das mit der Batch funktioniert leider so nicht. Dann kommt ein solches Fenster: https://jkroeger.files.wordpress.com/2010/07/chrome_start.png
"möchten sie zulassen dass durch das folgende programm änderungen an diesem computer vorgenommen werden?". Klar könnte ich die Sicherheitsstufe runterstellen in Windows, aber das ist ja nicht Sinn und Zweck.
Und einen Installer möchte ich eigentlich ungern. Soweit ich das script lese, wird bei dem NSIS-Teil irgendwas installiert. Und wo ist dann die exe? Wie heißt sie? Wird die alte exe überschrieben? Aber supi Company name ^^
"möchten sie zulassen dass durch das folgende programm änderungen an diesem computer vorgenommen werden?". Klar könnte ich die Sicherheitsstufe runterstellen in Windows, aber das ist ja nicht Sinn und Zweck.
Und einen Installer möchte ich eigentlich ungern. Soweit ich das script lese, wird bei dem NSIS-Teil irgendwas installiert. Und wo ist dann die exe? Wie heißt sie? Wird die alte exe überschrieben? Aber supi Company name ^^
Zuletzt bearbeitet:
A
A d00d
Gast
Bei der NSIS geschichte wird nichts installiert, auch wenn der Name das suggeriert und es eigentlich für Installationsroutinen gemacht ist. (Außer NSIS selber, wenn man das Setup nicht einfach mit 7-Zip entpackt.)
Funktional ist das das gleiche wie dein Batchfile, nur eben als .exe, ohne Konsolenfenster, mit eigenem Icon.
Der UAC-Prompt in deinem Bild, ist ja gewollt. Daher funktioniert das mit der Batch schon. Ich dachte es ging nur darum, sich das 'Als Admin ausführen' zu sparen. Du willst anscheinend, dass er ohne diesen Bestätigungsdialog als Admin startet. Was so nicht sinnvoll möglich ist, außer du kennst das Passwort für das Admin-Konto. Dann könntest du die Befehle in deinem Batchfile einfach über runas /savecred ausführen. Wo das PW dann einmalig abgefragt wird.
Da in den meisten Konfigurationen aber kein eigenes Admin-PW gesetzt wurde und man dieses dann auch bei jedem UAC-Prompt, wie den in deinem Bild, eingeben müsste, macht das so wahrscheinlich keinen Sinn. Also entweder UAC deaktivieren, oder damit leben, dass es eben so eine Abfrage gibt, wenn man mit einem Nicht-Admin-Konto unterwegs ist. Denn zum Starten/Beenden von Diensten braucht es i.d.R. nunmal administrativen Zugriff.
Funktional ist das das gleiche wie dein Batchfile, nur eben als .exe, ohne Konsolenfenster, mit eigenem Icon.
Der UAC-Prompt in deinem Bild, ist ja gewollt. Daher funktioniert das mit der Batch schon. Ich dachte es ging nur darum, sich das 'Als Admin ausführen' zu sparen. Du willst anscheinend, dass er ohne diesen Bestätigungsdialog als Admin startet. Was so nicht sinnvoll möglich ist, außer du kennst das Passwort für das Admin-Konto. Dann könntest du die Befehle in deinem Batchfile einfach über runas /savecred ausführen. Wo das PW dann einmalig abgefragt wird.
Code:
runas /savecred /user:Administrator net start "OVRService"
OculusClient.exe
runas /savecred /user:Administrator sc stop "OVRService"
Da in den meisten Konfigurationen aber kein eigenes Admin-PW gesetzt wurde und man dieses dann auch bei jedem UAC-Prompt, wie den in deinem Bild, eingeben müsste, macht das so wahrscheinlich keinen Sinn. Also entweder UAC deaktivieren, oder damit leben, dass es eben so eine Abfrage gibt, wenn man mit einem Nicht-Admin-Konto unterwegs ist. Denn zum Starten/Beenden von Diensten braucht es i.d.R. nunmal administrativen Zugriff.
Zuletzt bearbeitet von einem Moderator:
- Registriert
- Dez. 2012
- Beiträge
- 2.782
Das geht ja mit BatchToExe-Converter ebenfalls, samt Icon, ohne Konsolenfenster ohne als Admin starten zu müssen. Letzteres wird voreingestellt in der exe. Die Frage kommt natürich trotzdem.A d00d schrieb:Bei der NSIS geschichte wird nichts installiert, auch wenn der Name das suggeriert und es eigentlich für Installationsroutinen gemacht ist. (Außer NSIS selber, wenn man das Setup nicht einfach mit 7-Zip entpackt.)
Funktional ist das das gleiche wie dein Batchfile, nur eben als .exe, ohne Konsolenfenster, mit eigenem Icon.
Ob jetzt der UAC-Promt oder Admin-Promt kommt ist mir Wurst. Ich möchte gar keinen Promt. Unnütze Klickarbeit. Manchmal startet man noch eben & ist schon im Begriff zu gehen, drückt noch im Weggehen die Returntaste - kommt wieder an den Schreibtisch & da steht sone Abfrage - nervig.A d00d schrieb:Der UAC-Prompt in deinem Bild, ist ja gewollt. Daher funktioniert das mit der Batch schon. Ich dachte es ging nur darum, sich das 'Als Admin ausführen' zu sparen.
Admin-Passwort eingeben - wäre ja noch aufwändiger jedes Mal. Habe auch keines. Kann man das Adminpasswort nicht einfach übergeben in der Batch?A d00d schrieb:Dann könntest du die Befehle in deinem Batchfile einfach über runas /savecred ausführen. Wo das PW dann einmalig abgefragt wird.
Code:runas /savecred /user:Administrator net start "OVRService" OculusClient.exe runas /savecred /user:Administrator sc stop "OVRService"
Ich meine mal gelesen zu haben, dass es mit Powershell geht. Irgendwie beim 1. Mal mußm an sagen zulassen. Und dann fragt der nie wieder. Auch nach Windows-Neustart nicht. Bis man halt Windows neu installiert.
Zuletzt bearbeitet:
DPXone
Lieutenant
- Registriert
- Mai 2009
- Beiträge
- 554
Wenn du ein Passwort für deinen Benutzeraccount hast, dann ist das über die Aufgabenplanung möglich.
Voraussetzung:
Die PowerShell Ausführungsrichtlinie für deinen Benutzer ist mindestens auf RemoteSigned gesetzt.
Nun zu deinem Anliegen:
Voraussetzung:
Die PowerShell Ausführungsrichtlinie für deinen Benutzer ist mindestens auf RemoteSigned gesetzt.
Code:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Confirm:$false -Scope CurrentUser -Force
Nun zu deinem Anliegen:
- Erstelle eine Aufgabe
- Setze folgende Aktion
- Nach dem Klick auf OK gib dein Passwort ein
- Erstelle folgendes PowerShell-Skript und speichere es irgendwo (aber nicht auf dem Desktop, siehe nächsten Punkt)
Code:$TaskName = 'Start OVRService' # Name der Aufgabe $ServiceName = 'OVRService' # Name des Dienstes $ProcessPath = 'D:\Oculus\Support\oculus-client\OculusClient.exe' # Pfad zum Programm If (-not(Get-Service $ServiceName) -or -not(Get-ScheduledTask $TaskName)) { Return } # Wenn Aufgabe oder Dienst nicht vorhanden -> Exit $i = 0 # Zähler für Exit-Bedingung While ((Get-Service $ServiceName).Status -ne 'Running') { # Solange Dienst nicht den Status 'Running' hat ... If ($i -lt 10) { $i++ } Else { Return } # Nach 10 Versuchen -> Exit Start-ScheduledTask -TaskName $TaskName # Starte Aufgabe (=Dienst starten) Start-Sleep 1 # Warte 1 Sekunde } Start-Sleep 1 # Zusätzlicher Timer, falls der Dienst nach dem obigen Sleep-Timer immernoch nicht vollständig gestartet ist Start-Process $ProcessPath # Starte Anwendung
- Erstelle auf dem Desktop per Rechtsklick -> Verknüpfung folgende Verküpfung:
Pfad:
powershell.exe -WindowStyle Hidden -NoProfile -File "<PfadZumPowerShell-Skript>"
- Den Verknüpfungs-Namen kannst du nennen wie du möchtest
Zuletzt bearbeitet:
(Exit-Statement hinzugefügt wegen Loop-Gefahr)
DPXone
Lieutenant
- Registriert
- Mai 2009
- Beiträge
- 554
engine schrieb:Beim Ausführen von 6. poppt zu keiner Zeit die UAC auf?
Wie meinst du das mit 6.?
Da gehts ja nur um den Verknüpfungs-Dateinamen
Falls du dieses Vorgehen allgemein meinst, dann ja. Es poppt (bei mir) nichts auf <- Höchste UAC-Stufe
Zuletzt bearbeitet:
DPXone
Lieutenant
- Registriert
- Mai 2009
- Beiträge
- 554
engine schrieb:Ich probiere es mal mit deinem Vorgehen, wenns klappt ohne UAC, dann ist gut/besser.
Ja probier es einfach mal. Sollte schon funktionieren.
Gibst Feedback.
es funktioniert sogar, ABER...
Der Process ist da, aber keine app, die startet nicht sichtbar.
Aber keine UAC. Ich benutze meinen Benutzernamen wie oben angegeben und mein PW.
Dasselbe Verhalten über die Aufgaben-Verknüpfung, aber die UAC poppt hier auf.
Also funktioniert es mit dem Powershell-Script ohne UAC, jedoch ist die app in beiden Fällen nicht sichtbar, nur der Process.
Es ist RealTemp.exe
Ach, einfach in der Aufgabenplanung nicht mit dem eigenen Benutzer anmelden, sondern nur die oberste Option mit dem eigenen Benutzer wählen, also ohne PW und "mit höchsten Privilegien ausführen" wählen.
Es klappt prima mit dem PS, ohne UAC ! THX !
Und :
Der Process ist da, aber keine app, die startet nicht sichtbar.
Aber keine UAC. Ich benutze meinen Benutzernamen wie oben angegeben und mein PW.
Dasselbe Verhalten über die Aufgaben-Verknüpfung, aber die UAC poppt hier auf.
Also funktioniert es mit dem Powershell-Script ohne UAC, jedoch ist die app in beiden Fällen nicht sichtbar, nur der Process.
Es ist RealTemp.exe
Ach, einfach in der Aufgabenplanung nicht mit dem eigenen Benutzer anmelden, sondern nur die oberste Option mit dem eigenen Benutzer wählen, also ohne PW und "mit höchsten Privilegien ausführen" wählen.
Es klappt prima mit dem PS, ohne UAC ! THX !
Und :
https://technet.microsoft.com/de-de/library/hh847748.aspxDie Ausführungsrichtlinie ist kein Sicherheitssystem, das Benutzeraktionen beschränkt. Benutzer können eine solche Richtlinie problemlos umgehen, indem sie den Inhalt des Skripts in der Befehlszeile eingeben, wenn sie kein Skript ausführen dürfen. Stattdessen hilft die Ausführungsrichtlinie Benutzern bei der Festlegung von grundlegenden Regeln und verhindert, dass sie diese unbeabsichtigt verletzen.
Zuletzt bearbeitet:
DPXone
Lieutenant
- Registriert
- Mai 2009
- Beiträge
- 554
engine schrieb:Die Ausführungsrichtlinie ist kein Sicherheitssystem, das Benutzeraktionen beschränkt. Benutzer können eine solche Richtlinie problemlos umgehen,indem sie den Inhalt des Skripts in der Befehlszeile eingeben, wenn sie kein Skript ausführen dürfen.
Aber da es sich hier um ein Skript (.ps1) handelt, muss die ExecutionPolicy gesenkt werden
Ähnliche Themen
- Antworten
- 3
- Aufrufe
- 856
- Antworten
- 11
- Aufrufe
- 7.606
- Antworten
- 7
- Aufrufe
- 3.126