如何从Windows服务打开cmd?

时间:2015-12-03 06:17:46

标签: c# windows-services

我正在创建Windows服务并使用C#。我想从服务中打开cmd.exe。我的操作系统是Windows 8.是否可以从Windows服务中获取,或者是否有其他替代方案。

(我希望在一段时间后打开cmd.exe - 这就是我选择Windows服务的原因)

1 个答案:

答案 0 :(得分:1)

这不起作用。问题是您尝试从Windows服务显示UI(控制台),并且Windows服务未在任何特定用户的上下文中运行。从Vista和更高版本的OS开始,Windows服务在隔离的会话中运行,不允许与用户或桌面交互,从而无法运行。

根据您的需要,有两个解决此问题的方法。

  1. 如果您希望打开cmd,可以考虑使用Windows任务计划程序中的任务计划操作,然后执行操作
  2. 如果您只需要使用cmd.exe执行某些操作,例如复制文件,则不需要显示UI,那么您可以使用以下内容实现该操作
  3. 在不创建窗口的情况下启动cmd

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

    有关详细信息,请查看以下链接: