簡體   English   中英

使用System.Diagnostics.Process.Start()啟動時,MSAccess無法打開數據庫

[英]MSAccess not opening database when started using System.Diagnostics.Process.Start()

我無法使用System.Diagnostics.Process.Start()以編程方式啟動Access數據庫(msaccess.mdb)。

這是場景:

  1. vb.net aspx頁面開始[installpath] \\ cmd \\ ERPImport.exe
  2. ERPImport.exe從SQL Server數據庫(pgmname,params,execdir)讀取設置,然后再次使用process.start()啟動批處理文件[installpath] \\ cmd \\ Import.cmd
  3. Import.cmd僅包含以下3行:

G: cd \\ESVONIX "C:\\Program Files (x86)\\Microsoft Office\\Office14\\msaccess.exe" "G:\\ESVONIX\\ESVONIX.mdb" /runtime

esvonix.mdb被編程為在startforms OnOpen事件中啟動一些數據操作。 在數據庫設置中設置了startform。

現在對於奇怪的部分:

  • 如果我從Windows資源管理器中雙擊啟動Import.cmd,一切都很好
  • 如果我從命令行啟動ERPImport.exe(將連接字符串作為其期望的參數),則可以正常工作

但是:如果我從vb.net頁中啟動ERPImport.exe,它將正確啟動Import.cmd,而Import.cmd將啟動msaccess.exe(如taskmgr所示)。 但是,Access不會打開數據庫(未創建ldb文件),並且不會開始處理。 它在taskmgr中“徘徊”,使用了0 cpu時間。 從taskmgr中殺死msaccess.exe后,其余的一切都可以正常工作:Import.cmd完成,ERPImport完成,aspx頁面顯示結果。

我在process.startinfo中嘗試了許多不同的設置,但是無論我的設置如何,結果始終是相同的。

任何想法都非常歡迎。 謝謝

從完整的Office安裝更改為Access Runtime之后,即使在Access調用中沒有/ runtime參數,問題仍然存在。 但是,問題消失了,並且在命令行中在數據庫名稱之后使用命令行Switch / save正確地調用和處理了Access。

更新-解決了不幸的是/ safe參數(請求以安全模式啟動訪問權限)不能解決問題。 添加參數后,該過程確實運行了一次,然后返回到以前的行為。

最后的解決方案是將ApplicationPool設置更改為“ LoadUserProfile = true”。 關於SO處理此參數有很多問題。 就我而言,確切原因尚不清楚,但如果可行,則...

更新2017年7月11日,不同用戶環境中的相同問題。 這次是Windows 2012 Server。 在調用msaccess.exe並將應用程序池設置為LoadUserProfile = true時,安裝程​​序使用/ safe參數的組合(在高級設置中)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM