WebService 調用服務器上exe應用程序


 

最近在一個項目中用到這樣的需求,需要PDA通過WebService來啟動服務器上的一個exe應用程序,這個exe應用程序是有界面的。當我通過以下代碼來啟動這個exe時,問題出現了。程序並沒有運行,但是在任務管理器里面卻可以看到這個exe的進程。

 服務端代碼:

    [WebMethod]
    public bool Test()
    {
        try
        {
            Process ProgStock = new Process();
            ProgStock.StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;  //應用程序所在目錄
            ProgStock.StartInfo.UseShellExecute = false;
            ProgStock.StartInfo.RedirectStandardOutput = true;
            ProgStock.StartInfo.CreateNoWindow = true;

            ProgStock.StartInfo.FileName = "WindowsFormsServer.exe";  //執行程序完整路徑
            ProgStock.StartInfo.Arguments = "1";   //參數
            ProgStock.Start();

            ProgStock.WaitForExit();

        }
        catch (Exception ex)
        {

            throw ex;
        }
        return true;
    }

解決的方法:

    在網上了很多方法,一般說aspnet權限不夠,需要模擬administrator用戶來啟動exe,這是其中原因之一,但是僅僅這樣還是不行。我試過了這個方法,雖然模擬administrator,在任務管理器里面這個exe的進程用戶由aspnet變成了administrator,但是界面還是出不來。

幸運的是,終於找到了辦法。

     修改“服務”。在“我的電腦”,右鍵“管理” ,選擇“IIS Admin”服務,雙擊,選擇“登錄”,勾選“服務與桌面交互”

模擬Administrator用戶:

在“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG”下面找到machine.config,編輯屬性:

 <system.web>
  <processModel autoConfig="true"  userName="Administrator" password="****"/>

</system.web>

重啟IIS服務就OK了!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM