第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用C#從Windows服務(wù)運行EXE程序?

如何使用C#從Windows服務(wù)運行EXE程序?

倚天杖 2019-10-18 10:54:19
如何EXE使用C#從Windows服務(wù)運行程序?這是我的代碼:System.Diagnostics.Process.Start(@"E:\PROJECT XL\INI SQLLOADER\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe");當(dāng)我運行此服務(wù)時,該應(yīng)用程序未啟動。我的代碼有什么問題?
查看完整描述

3 回答

?
BIG陽

TA貢獻1859條經(jīng)驗 獲得超6個贊

這將永遠行不通,至少在Windows Vista或更高版本中不行。關(guān)鍵問題是您試圖從Windows服務(wù)而不是標準Windows應(yīng)用程序中執(zhí)行此操作。您顯示的代碼將在Windows Forms,WPF或控制臺應(yīng)用程序中完美運行,但在Windows Service中根本無法運行。


Windows Services無法啟動其他應(yīng)用程序,因為它們未在任何特定用戶的上下文中運行。與常規(guī)Windows應(yīng)用程序不同,服務(wù)現(xiàn)在在隔離的會話中運行,并且禁止與用戶或桌面進行交互。這樣就沒有地方可以運行該應(yīng)用程序。


這些相關(guān)問題的答案提供了更多信息:


引發(fā)Timer事件時,Windows Service如何啟動進程?

Windows中的哪個進程是用戶特定的?

Windows服務(wù)(允許與桌面交互的服務(wù))

到目前為止,您可能已經(jīng)發(fā)現(xiàn),解決問題的最佳方法是創(chuàng)建一個標準的Windows應(yīng)用程序而不是服務(wù)。這些文件設(shè)計為由特定用戶運行,并與該用戶的桌面相關(guān)聯(lián)。這樣,您可以使用已經(jīng)顯示的代碼隨時運行其他應(yīng)用程序。


假設(shè)您的控制臺應(yīng)用程序不需要任何接口或任何輸出,另一種可能的解決方案是指示該過程不要創(chuàng)建窗口。這將防止Windows阻止您創(chuàng)建進程,因為它將不再請求創(chuàng)建控制臺窗口。您可以在有關(guān)相關(guān)問題的答案中找到相關(guān)代碼。


查看完整回答
反對 回復(fù) 2019-10-18
?
蠱毒傳說

TA貢獻1895條經(jīng)驗 獲得超3個贊

您可以從Windows任務(wù)計劃程序中使用此工具,有許多類似TaskScheduler的庫可以為您提供幫助。


例如,考慮我們要計劃一個任務(wù),該任務(wù)將在五秒鐘后執(zhí)行一次:


using (var ts = new TaskService())

        {


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

                .Once()

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

                .AsTask("myTask");


        }

notepad.exe將在五秒鐘后執(zhí)行。


有關(guān)詳細信息,請訪問Wiki。


如果您知道該程序集中需要哪個類和方法,則可以這樣自己調(diào)用它:


        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;

                }

            }


        }


查看完整回答
反對 回復(fù) 2019-10-18
  • 3 回答
  • 0 關(guān)注
  • 2107 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號