【发布时间】:2012-05-17 18:07:30
【问题描述】:
我一直在努力解决这个问题,但似乎我无法在任何地方找到问题的解决方案。这是第一部分:VBA Shell command always returns "File Not Found" 在那个问题中,由于某种奇怪的原因,它没有在 %APPDATA% 文件夹中找到应用程序,可能是安全设置。
我已经将导入工具移到了我存储数据库的同一目录中,希望它能够正常工作。
我的目标是单击 MS Access 中的按钮并让它直接运行我的导入工具。现在,我让它打开包含该工具的文件夹。这适用于我的具有管理员权限的开发机器,但不适用于没有管理员权限的其他机器。现在的代码如下所示:
Dim hProcess as Long
Dim myPath as String
Dim ex as String
ex = "C:\WINDOWS\explorer.exe "
myPath = Environ("ProgramFiles(x86)") & "\mytool\"
hProcess = Shell(ex & myPath, vbNormalFocus)
这允许打开保存文件的文件夹,但只能在具有完全管理员权限的计算机帐户上打开。在没有完全权限的计算机帐户上运行它时,它根本什么都不做。
我还尝试了以下方法:
Dim hProcess As Long
Dim myPath as String
myPath = Environ("ProgramFiles(x86)") & "\mytool\mytool.exe"
hProcess = Shell(myPath, vbNormalFocus)
当我查看进程管理器时,这部分“似乎”起作用,因为它加载了应用程序“mytool.exe”。但是,几秒钟后(可能是 20 秒钟),会弹出一个对话框,说明应用程序“mytool.exe”已停止工作。
这里要注意的一点是,我在我的开发机器上拥有管理员权限,但我在我的家用机器上拥有所有权限。在我的家用机器上,第二个代码没有任何问题。在我的开发机器上,它崩溃了,而在受限制的用户机器上,它根本不做任何事情。
关于如何在使用低于管理员权限的情况下从 MS Access 打开此应用程序有什么建议吗?要么直接运行应用程序,要么至少打开该应用程序所在的文件夹。
谢谢!
附:我已经尝试了在 stackoverflow 上找到的 ShellAndWait 和 RunApplication 代码,但在这种情况下都不起作用。
【问题讨论】: