Dendei
Dendei

Reputation: 571

Windows service recovery - run a program wont work

How do i do this?

i've tried all i can think of.

Why cant it just work with an normal exe?

and i know it should run a program because it can restart the service correctly.

EDIT

Application: test.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Exception

enter image description here

This is my latest try to make it work.

the script has the code

Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("iexplore")
Set objShell = Nothing

Now the script opens internet explorer if i run the cmd command

wscript.exe "C:\asfh.vbs"

Upvotes: 2

Views: 4077

Answers (1)

Harry Johnston
Harry Johnston

Reputation: 36318

The "run a program" recovery option for when a service crashes runs the specified executable in the same way as the service, i.e., it runs in session 0 (and so is affected by session 0 isolation, see also related questions) and it runs with the same security context as the service.

This means that it can't interact directly with the user (you can display a GUI, but nobody will see it) but it also restricts what the executable or script can do. For example, some shell API functions will not work properly unless the user account has been interactively logged in at some point. In the example script you posted, the script itself is probably running, but is unable to launch Internet Explorer because IE is only designed to run in an interactive session.

Provided you restrict yourself to basic functionality, it should all work as expected. (There is no master list that I know of describing what functionality is safe to use in a service context, but it is usually easy to guess. You can resort to trial and error if necessary!)

Also note that as far as I know forcedos.exe is no longer present in modern versions of Windows. If you want to run a batch file, you can specify cmd.exe as the application and /c myscript.bat as the command line parameters.

Upvotes: 5

Related Questions