Vb.net MSAccess在使用System.Diagnostics.Process.Start()启动时未打开数据库

Vb.net MSAccess在使用System.Diagnostics.Process.Start()启动时未打开数据库,vb.net,process,ms-access-2010,Vb.net,Process,Ms Access 2010,我无法使用System.Diagnostics.Process.start()以编程方式启动Access数据库(msaccess.mdb) 这是一个场景: vb.net aspx页面启动[installpath]\cmd\ERPImport.exe ERPImport.exe从SQL server db(pgmname、params、execdir)读取设置,然后再次使用process.start()启动批处理文件[installpath]\cmd\Import.cmd Import.cmd仅包

我无法使用System.Diagnostics.Process.start()以编程方式启动Access数据库(msaccess.mdb)

这是一个场景:

  • vb.net aspx页面启动[installpath]\cmd\ERPImport.exe
  • ERPImport.exe从SQL server db(pgmname、params、execdir)读取设置,然后再次使用process.start()启动批处理文件[installpath]\cmd\Import.cmd
  • Import.cmd仅包含以下三行:
  • G:
    cd\ESVONIX
    “C:\Program Files(x86)\Microsoft Office\Office14\msaccess.exe”“G:\ESVONIX\ESVONIX.mdb”/runtime

    对esvonix.mdb进行编程,以在startforms OnOpen事件中启动一些数据操作。startform在db设置中设置

    现在来看奇怪的部分:

    • 如果我从Windows资源管理器双击Import.cmd,一切正常
    • 如果我从命令行启动ERPImport.exe(使用一个连接字符串作为它期望的参数),它就可以正常工作
    但是:如果我从vb.net页面中启动ERPImport.exe,它将正确启动Import.cmd,Import.cmd将启动msaccess.exe(如我在taskmgr中看到的)。但是,Access不会打开数据库(未创建ldb文件),也不会开始处理。它在taskmgr中“挂起”,使用的cpu时间为0。从taskmgr中删除msaccess.exe后,其余部分再次正常工作:Import.cmd完成,ERPImport完成,aspx页面显示结果

    我在process.startinfo中尝试了大量不同的设置,但无论我的设置如何,结果总是一样的

    任何想法都是非常受欢迎的。
    谢谢

    从完整的Office安装更改为Access运行时后,问题仍然存在,即使在Access调用中没有/Runtime参数。 但是,问题消失了,并且在命令行中数据库名称之后使用命令行开关/save正确地调用和处理了Access

    更新-已解决 不幸的是/safe参数(请求访问以安全模式启动)没有解决问题。该进程在添加参数后确实运行了一次,然后返回到以前的行为

    最后的解决方案是将ApplicationPool设置更改为“LoadUserProfile=true”。处理这个参数有很多问题。我的确切原因还不清楚,但如果它起作用

    2017年7月11日更新 在不同的用户环境中存在相同的问题。这次是Windows2012服务器。
    当调用msaccess.exe并将应用程序池设置为LoadUserProfile=true(在高级设置中)时,安装程序使用了/safe参数的组合。

    可能Access被卡住了,因为它希望在属于某个人的帐户下运行,因此具有用户配置文件的“正常”环境,Windows注册表(HKCU)中的用户分支等。。如果您的ASPX脚本正在属于系统帐户(例如,“网络服务”)的IIS应用程序池中运行,则这可能会导致访问挂起,因为它试图操作那些可能不存在的“常规用户”资源。您可以尝试调整应用程序池设置以使用非系统(“真人”)帐户,看看这是否有帮助。谢谢Gord,但应用程序池的用户帐户已设置为“norrmal”用户帐户,该帐户可以登录到服务器,并可以运行Access和附带的代码。事实上,我在同一个用户下做了问题中描述的测试。谢谢你发布你的发现。请您花一点时间编辑您的答案,解释一下
    /save
    开关应该做什么,以及您是如何发现它的?今天我收到了与昨天不同的结果。也许解决方案还没有被正确描述。一旦我有了一个真实且持久的解决方案来描述,我将立即更新