6

I am creating a Windows Service and using C#. I want open cmd.exe from the service. My operating system is Windows 8. Is it possible from a Windows Service, or is there another alternative for that.

(I want to open cmd.exe after some interval - that's why I chose a windows service)

David Gardiner
  • 16,892
  • 20
  • 80
  • 117
Jui Test
  • 2,399
  • 14
  • 49
  • 76
  • 1
    After some interval of what ? after logging into Windows? You can use Scheduler instead. – Raptor Dec 03 '15 at 06:20
  • Instead of using windows service,I already tried schedular.But no success.Application was build in VB when I run it opens cmd but from schedular unable to open – Jui Test Dec 03 '15 at 06:26
  • Can you show some code? You're using `System.Diagnostics.Process.Start` ? – David Gardiner Dec 07 '15 at 06:04

1 Answers1

4

This won't work. Problem is that you are trying to show UI (Console) from a Windows Service and Windows Service is not running in the context of any particular user. Starting from Vista and later OS Windows Services are running in an isolated session and are disallowed to interact with a user or desktop making it impossible to run.

Depending on what you need there are two solutions to this problem.

  1. If you want the cmd to be opened you might consider using a task scheduled action from Windows Task Scheduler and then perform your actions
  2. If you need just to execute some actions with the cmd.exe, for example copy file, that does not require the UI to be displayed then you can achieve that with the following

Start cmd without creating a window:

ProcessStartInfo processInfo = new ProcessStartInfo
            {
                WindowStyle = ProcessWindowStyle.Normal,
                CreateNoWindow = true,
                UseShellExecute = false,
                FileName = "cmd.exe",
                Arguments = @"/C copy /b Image1.jpg + Archive.rar Image2.jpg"
            };

For the further details please check following links:

Community
  • 1
  • 1
nizzik
  • 826
  • 5
  • 18