2013-11-15 218 views
1

我正在創建一個在Windows 7上運行.exe文件的服務。由於需求複雜,必須將其作爲服務來完成,因此控制檯應用程序不可用。服務未運行應用程序

我已經編寫了下面的代碼,它完美地在控制檯應用程序中運行,但是當放置在服務中時,可執行文件從不運行。

ProcessStartInfo startInfo = new ProcessStartInfo(); 

    try 
    { 
     startInfo.WorkingDirectory = "C:\\Folder"; 
     startInfo.FileName = "MyApp.exe"; 
     Process myProcess = Process.Start(startInfo);    
    } 
    catch (Exception ex) 
    { 
     using (StreamWriter writer = File.AppendText(path)) 
     { 
      writer.WriteLine(ex.Message); 
     } 
    } 
} 

沒有錯誤被拋出,但應用程序根本沒有啓動。

我讀過服務無法以直接的方式運行可執行文件,並根據建議修改了上述代碼,但它不起作用。

編輯:我已經手動配置的服務如下:

enter image description here

+0

您是否嘗試指定具體用戶在服務屬性對話框下運行? – Redwan

+0

我附上了一個截圖,顯示了我在服務窗口中配置的內容。 –

+0

因此,該用戶可能沒有足夠的權利來運行外部應用程序。嘗試在用戶政治中挖掘信息或在「管理員」下運行(但這是一個糟糕的主意)。 – Redwan

回答

0

這個問題一直備受挫折的原因,我終於解決了我的問題。是的,儘管每個人都說這是不可能的,但我已經成功地爲GUI應用程序提供服務。雖然有一個警告 - 「修復」可以被視爲利用Windows中的漏洞,因爲我使用的代碼基本上通過了Vista和Windows 7 UAC。本質上,應用程序始終以完全的權限執行並繞過UAC。

如果任何人有同樣的問題,你需要做的是遍歷PC上登錄用戶列表,並選擇在此會話中打開UI應用程序(它具有用戶的桌面),而不是在會話0服務應該在運行(並且沒有桌面)。

對於一些人來說,這可能不是一個解決方案,因爲它不安全。但就我而言,安全並不是主要問題,我只是需要它的工作(必須是強制服務)。

希望這可以幫助那些和我有同樣問題的人。

相關問題