2012-06-20 23 views
0

當我開始在本地啓動BAT文件帶參數所有工作正常的過程。我將這個網站上傳到一個Windows服務器,然後一個進程失敗,運行這個過程。它只是執行代碼而什麼都沒有發生。如何在.NET運行一個批處理文件(.bat),在一下機器運行,並在另一不會

我試圖UseShellExecute = falsecmd和不運行它...

還有什麼我可以檢查?

+3

顯示的代碼,如果你想獲得幫助 –

+0

你想遠程運行的程序?或在同一臺機器上? (像@SteveB寫的,顯示代碼) – eyossi

+0

試圖在同一臺機器上運行它,在本地 – Oleg

回答

1

你是否認爲你的Windows服務器可能無法運行bash的?

+0

我使用服務器2003,其他腳本,他運行良好。 – Oleg

0

從依賴關係開始。例如:

  1. 你有cygwin或類似的服務器上會真正運行bash shell嗎?
  2. 執行進程的用戶是否確實有權啓動bash shell?
  3. 執行進程的用戶是否有權執行bash腳本中的操作?
  4. 他們的文件路徑或環境變量的依賴關係?那些路徑和變量是否存在?

測試的一種方法是登錄到用於執行腳本的用戶帳戶下的服務器,以查看您是否可以自己運行該腳本。

它是完全有可能的bash腳本失敗並掛着羊頭提示用戶進行輸入。也有可能UAC處於啓用狀態,腳本需要提升權限才能執行操作。沒有看到劇本,很難說。

+0

1-我的IIS服務器運行其他'bat'腳本,所以我認爲它不是問題2-用戶有權限,它啓動腳本但永遠不會結束。 3-我認爲是因爲在cmd上運行它。 4-所有的路徑和變量定義良好。當我簡單地在cmd上運行它時,它就ok了。 – Oleg

+0

@Igor:我很困惑。你在說什麼bash或蝙蝠?那些是完全分開的東西。 – NotMe

+0

對不起,我正在談論BAT文件 – Oleg

0

您幾乎肯定有安全/權限問題。檢查你的服務器的事件日誌(特別是安全事件日誌)。另外,如果可以的話,在服務器上運行SysInternals Process Monitor(procmon)也可能會有所幫助,如果沒有其他的話。

除非你已經設定了您的網站使用模擬,將使用本地,有限的帳戶下運行。對於Windows Server 2008,DefaultAppPool將使用本地IIS APPPOOL\DefaultAppPool身份,該身份幾乎肯定無權調用bash。

它可能工作在本地開發機器上,因爲Visual Studio會爲了調試你的應用在模仿你(可能是本地管理員)。

爲了解決這個問題,您需要爲您的站點的應用程序池授予使用身份的權限,以執行bash,或者(這可能更簡單)將應用程序池的身份更改爲域用戶(或至少是本地用戶)。

+0

嗯,我改變了游泳池到'Default Pool'並嘗試了所有游泳池,並且仍然無法使用。它實際上被調用,因爲我看到了結果(創建的目錄),但所有下一步都被取消了。我正在談論應該使用java創建apk文件的'ant'過程。在'cmd'裏它工作的很好。 – Oleg

+0

首先,你的環境變量(比如'PATH'和'JAVA_HOME')對於你的身份(當你使用'cmd')可能會比DefaultAppPool的身份不同,確保你已經將它們設置爲系統環境變量;其次,你應該在'.bat'文件中嘗試一些診斷,確保參數(例如'%1')是你認爲應該是的,使用'@echo%1'輸出值,並使用'mybatch.bat > logfile.txt'來捕獲輸出(其中mybatch.bat是你的'.bat'文件的名稱)。 –

相關問題