2014-11-20 40 views
-1

我有一個VB6 EXE,我想通過C#代碼觸發,如下所示。在這段代碼執行後,我可以看到EXE已經在taskmanager中啓動了,並且在某個時候完成了。VB6 EXE參數在CMD文件中工作,但不在C#代碼中

我在IIS服務器中部署代碼。開始瀏覽網站並點擊啓動VB6SOME.exe的c#代碼按鈕。 Exe開始但從未完成(Taskmanager顯示用戶NETWORK服務的VB6SOME.exe)。

prcstrinfo.FileName = "VB6SOME.exe"; 
prcstrinfo.Arguments = "USERID,PASSWORD," + DateTime.Now.ToShortDateString();   
Process proc = Process.Start(prcstrinfo); 

此外,我試圖通過CMD調用VB6SOME.exe傳遞所有必要的參數。它開始並正確完成。 (我也監視了TaskManager,我看到它開始時我的ID不是網絡服務)。請幫助解決問題。

+0

你可以嘗試捕捉應用程序的退出代碼,看看是否給你任何見解。你能夠在服務器上手動運行exe(使用相同的參數)嗎? – 2014-11-20 21:50:44

+0

是的 - 我可以通過服務器中的CMD運行exe,無任何問題。唯一不同的是當我運行CMD文件時,用戶名顯示我的ID,但是當它通過C#運行時,用戶名顯示爲網絡服務 – vicage 2014-11-20 22:02:43

+0

那麼你的答案就是......! – 2014-11-20 23:13:13

回答

0

註冊表重定向

註冊表重定向器通過提供WOW64註冊表的關鍵部分的單獨的邏輯視圖隔離32位和64位應用程序。註冊表重定向程序截取到每個邏輯註冊表視圖的32位註冊表調用,並將它們映射到相應的物理註冊表位置。重定向過程對於應用程序是透明的。因此,即使數據存儲在64位Windows上的不同位置,32位應用程序也可以像訪問32位Windows一樣訪問註冊表數據。

重定向爲以下注冊表項啓用:

HKEY_LOCAL_MACHINE \ SOFTWARE

從Windows SDK的64位開發指南

+0

不清楚。你能否建議解決問題的步驟 – vicage 2014-11-24 21:27:39

相關問題