为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用C#从Windows服务运行EXE程序?

如何使用C#从Windows服务运行EXE程序?

倚天杖 2019-10-18 10:54:19
如何EXE使用C#从Windows服务运行程序?这是我的代码:System.Diagnostics.Process.Start(@"E:\PROJECT XL\INI SQLLOADER\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe");当我运行此服务时,该应用程序未启动。我的代码有什么问题?
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

这将永远行不通,至少在Windows Vista或更高版本中不行。关键问题是您试图从Windows服务而不是标准Windows应用程序中执行此操作。您显示的代码将在Windows Forms,WPF或控制台应用程序中完美运行,但在Windows Service中根本无法运行。


Windows Services无法启动其他应用程序,因为它们未在任何特定用户的上下文中运行。与常规Windows应用程序不同,服务现在在隔离的会话中运行,并且禁止与用户或桌面进行交互。这样就没有地方可以运行该应用程序。


这些相关问题的答案提供了更多信息:


引发Timer事件时,Windows Service如何启动进程?

Windows中的哪个进程是用户特定的?

Windows服务(允许与桌面交互的服务)

到目前为止,您可能已经发现,解决问题的最佳方法是创建一个标准的Windows应用程序而不是服务。这些文件设计为由特定用户运行,并与该用户的桌面相关联。这样,您可以使用已经显示的代码随时运行其他应用程序。


假设您的控制台应用程序不需要任何接口或任何输出,另一种可能的解决方案是指示该过程不要创建窗口。这将防止Windows阻止您创建进程,因为它将不再请求创建控制台窗口。您可以在有关相关问题的答案中找到相关代码。


查看完整回答
反对 回复 2019-10-18
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

您可以从Windows任务计划程序中使用此工具,有许多类似TaskScheduler的库可以为您提供帮助。


例如,考虑我们要计划一个任务,该任务将在五秒钟后执行一次:


using (var ts = new TaskService())

        {


            var t = ts.Execute("notepad.exe")

                .Once()

                .Starting(DateTime.Now.AddSeconds(5))

                .AsTask("myTask");


        }

notepad.exe将在五秒钟后执行。


有关详细信息,请访问Wiki。


如果您知道该程序集中需要哪个类和方法,则可以这样自己调用它:


        Assembly assembly = Assembly.LoadFrom("yourApp.exe");

        Type[] types = assembly.GetTypes();

        foreach (Type t in types)

        {

            if (t.Name == "YourClass")

            {

                MethodInfo method = t.GetMethod("YourMethod",

                BindingFlags.Public | BindingFlags.Instance);

                if (method != null)

                {

                    ParameterInfo[] parameters = method.GetParameters();

                    object classInstance = Activator.CreateInstance(t, null);


                    var result = method.Invoke(classInstance, parameters.Length == 0 ? null : parameters);


                    break;

                }

            }


        }


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 1991 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信