Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Programm bei Aufruf als Dienst starten

Frage Microsoft Windows Tools

Mitglied: Nobody007

Nobody007 (Level 1) - Jetzt verbinden

13.10.2006, aktualisiert 07.11.2006, 9496 Aufrufe, 4 Kommentare

Hallo,

Ich versuche mit einem Renderprogramm im Netzwerk die Rendergeschwindigkeit drastisch zu verbessern. Für diesen Vorgang wurde bei den einzelnen Usern der dafür nötige Dienst installiert. Wenn nun der Auftrag von einem zentralen Server aus gestartet wird. Dann wird bei jedem User über den im Hintergrund laufenden Dienst das Programm zum Rendern aufgerufen. Dieser Start erfolgt in einem normalen Fenster mit normaler Priorität - Sachen gibt´s ;).
Da dieser Start öfters pro Tag abläuft ist er natürlich störend. Noch dazu werden die Computer für das normale Arbeiten recht stark beeinträchtigt.

Mein Vorhaben ist, dass dieses Programm im Hintergrund (als Dienst) mit niedriger Priorität gestartet wird. Das es Tools gibt mit denen ein Programm als Dienst gestartet werden kann ist mir bekannt. Bei all dieses Programmen kann dieser Dienst jedoch nur manuel oder automatisch gestartet werden.
Wenn ich dennoch dieses Programm als Dienst starte und der Auftrag vom Server erfolgt. Dann wird trotzdem eine zweite Instanz dieses Programmes (als Fenster im Vordergrund) gestartet.

Was ich gerne hätte ist, dass die *.exe Datei erst bei Abruf vom Server (von dem Netzwerkprogramm aus) als Dienst gestartet wird. Ich kann aber keine Batch Datei (mit den nötigen Befehlen) diesem Programm vorsetzen. Da das Serverprogramm direkten Zugriff auf die .exe benötigt. Es müßte also schon im System definiert sein, dass die .exe Datei immer bei Aufruf über ein anderes Programm als Dienst mit niedriger Priorität gestartet wird.

Für Lösungsvorschläge wäre ich sehr dankbar!

Mit freundlichen Grüßen
FPO
Mitglied: AndreasHoster
13.10.2006 um 18:05 Uhr
Lösung: Fast Keine

Unter Umständen gibt es noch eine Möglichkeit.
Batch scheidet zwar aus, weil der Dienst wohl auf den Namen der Exe programmiert ist.
Du könntest die EXE aber umbenennen und selber eine EXE mit diesem Namen erzeugen. Die wird dann gestartet und müsste dann halt das echte Programm aufrufen.
Du müsstest aber unter Umständen beim Aufruf Parameter entgegennehmen und weitergeben und falls OLE oder NetDDE ins Spiel kommt müsste man das auch irgendwie umleiten.

Alternativ den Hersteller fragen.

Jedenfalls kannst Du den Aufruf einer Exe und den Start derselben nicht so einfach abfangen und in einen Dienststart umwandeln.
Bitte warten ..
Mitglied: Nobody007
17.10.2006 um 16:27 Uhr
Danke für den Tip! Hab jetzt mal versucht das ganze mit der EXE abzufangen. Läuft leider auch schief . Das Programm dürfte doch etwas komplexer Arbeiten als ich anfangs dachte.

Eine andere Idee geht mir gerade durch den Kopf. Mit einem Dienst könnte ich die laufenden Prozesse ständig überwachen, und falls die EXE auftaucht wird diesem Prozess der Wert übertragen für niedrige Priorität und in den Hintergrund setzen (auch nicht in der Taskleiste sichtbar). ABER...ich weiß noch nicht wie ich das ganze in die Praxis umsetze. Gibt´s da vielleicht schon was fertiges? (Bin mir ziemlich sicher, aber ich hab noch nix gefunden das sich so adaptieren läßt)

Aja - das ganze sollte möglichst Resourcen schonend ablaufen ;) (der PC sollte ja nicht gleich in die Knie gehen wenn ein Dienst ständig die Prozesse überwacht)
Bitte warten ..
Mitglied: AndreasHoster
17.10.2006 um 17:40 Uhr
Na ja, mit meinem vielgeliebten Universalwerkzeug WMI ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanch ... )kann man schon eine Prozessüberwachung hinbasteln, die ist aber nicht wirklich ressourcenschonend und vermutlich auch nicht schnell genug um ein Aufblitzen des Fensters auf dem Bildschirm zu verhindern.
Kleines WindowsScriptingHost Beispiel:

Set wmi = GetObject("winmgmts:{(Security)}")
Set fso = CreateObject("Scripting.FileSystemObject")
Set sink = WScript.CreateObject("WbemScripting.SWbemSink","Prozess_")
wql = "select * from __instancecreationevent within 1 where targetinstance isa 'Win32_Process'"
wmi.ExecNotificationQueryAsync sink, wql
REM Bringt eine Messagebox und wenn ich die bestätige, dann beendet sich das Programm
MsgBox "Warte auf Events zur Ausgabe", vbSystemModal
Wscript.quit

Sub Prozess_OnObjectReady(objObject, objAsyncContext)

Set obj = objObject.TargetInstance
If LCase(obj.name)="Name der EXE" then
REM Priorität erniedrigen auf niedriger als normal
obj.SetPriority(0x00004000)
REM Leider keine Ahnung, wie man ein Programm in den Hintergrund kriegt mit WMI
REM Oder gleich beenden?
REM obj.terminate
End If

End Sub
Bitte warten ..
Mitglied: Nobody007
07.11.2006 um 12:47 Uhr
Danke, für die prompten Antworten! Hab noch ein paar andere Projekte beenden müssen, aber jetzt habe ich wieder Zeit für dieses.

Also das mit WMI zu schreiben ist für mich Neuland. Ich hab jedoch ein paar kleine Tools gefunden die das Problem schon fast lösen - mit der Betonung auf fast!

Es gibt 2 Tools die mir bei der Arbeit behilflich sind:
1. - ProcView (Command line Tool -> PV.exe)
2. - Cmdow.exe (Fenster in Win Managen)

mit PV kann ich die Prozesse auslesen (und zwar in einer endlos Schleife alle 2 Sekunden) und gleichzeitig die priorität einstellen :praktisch:
mit CMDOW kann ich das gewünschte Fenster in den Hintergrund setzen
...aber! CMDOW benötigt für das setzen in den Hintergrund eine sogenannte "Caption" vom Prozess. Jedoch ändert sich diese "Caption" (unten rot markiert) natürlich mit jedem neuen Auftrag, weil darin der Dateiname enthalten ist.

Wie kann ich also diese "Caption" auslesen und für CMDOW "schmackhaft machen? Weil im Moment mußte ich mich auf diesen Dateinamen fixieren.

@echo off
cmdow @ /hid
:start
PV.exe -f -r0 -d2000 3ds* >nul
if ERRORLEVEL 1 goto Process_NotFound
:Process_Found
cmdow "test01.max - 3ds max 5" /hid
PV.exe -f -pi 3ds*
PV.exe -f -x 3ds*
goto start

Besten Dank im Voraus für die tolle Hilfe in diesem Forum!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Sicherheitsgrundlagen
Programm ohne UAC und Administratorrechte starten (3)

Anleitung von agowa338 zum Thema Sicherheitsgrundlagen ...

Windows 7
gelöst Dienst wird nicht gefunden . Per Task starten (3)

Frage von xbast1x zum Thema Windows 7 ...

Windows 10
Durch einschalten des xbox one controller ein programm starten (3)

Frage von xsoerenx zum Thema Windows 10 ...

Windows 7
gelöst Windows Dienst startet Programm nicht bzw. nur im Hintergrund (5)

Frage von Juergen42 zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...