问题
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.
- 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 - 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