How to open cmd from windows service?

最后都变了- 提交于 2021-01-27 05:44:08

问题


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)


回答1:


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:

  • How can I run an EXE program from a Windows Service using C#?
  • How can a Windows Service start a process when a Timer event is raised?


来源:https://stackoverflow.com/questions/34059101/how-to-open-cmd-from-windows-service

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!