使用VBScript打开密码保护的Access数据库

使用VBScript打开密码保护的Access数据库,vbscript,passwords,ms-access-2007,ms-office,Vbscript,Passwords,Ms Access 2007,Ms Office,我有一个密码保护的access数据库,需要一夜之间更新。我们已经编写了一个LiteJava应用程序,它接受一些参数(即宏、路径、文件类型等),然后通过命令行执行VBScript。因此,我有一种方法“存储”用户名和密码,然后将其传递给VBScript,但到目前为止,我还没有找到任何其他帖子真正解决我的问题。下面是使用宏打开access db的示例代码,我需要让它接受用户名和密码 Set accdbObj = Wscript.CreateObject("Access.Application"

我有一个密码保护的access数据库,需要一夜之间更新。我们已经编写了一个LiteJava应用程序,它接受一些参数(即宏、路径、文件类型等),然后通过命令行执行VBScript。因此,我有一种方法“存储”用户名和密码,然后将其传递给VBScript,但到目前为止,我还没有找到任何其他帖子真正解决我的问题。下面是使用宏打开access db的示例代码,我需要让它接受用户名和密码

    Set accdbObj = Wscript.CreateObject("Access.Application")
    accdbObj.Application.Visible = True

    Message = ("Access Password Update Started With Macro...")
    LogInformation Message, Path

    accDatabase = accdbObj.OpenCurrentDatabase(Path)
    accdbObj.Run Macro

    accdbObj.Terminate
    Wscript.Quit
请记住,
路径
是作为字符串传入的参数。

将数据库密码作为其第三个参数。但是,
OpenCurrentDatabase
不返回任何内容,因此我认为将其返回值指定给
accDatabase
没有意义。试着这样做:

accdbObj.OpenCurrentDatabase Path, , "password_here"
Access db文件有两种类型的密码

  • 数据库密码:所有用户打开数据库必须提供的一个密码
  • 用户级安全密码:每个已定义用户的单独密码
  • 我写了这个答案的第一部分,假设你指的是数据库密码。然而,我注意到您提到了用户名,这表明您可能正在使用ULS(用户级安全)。ULS仅在较旧的MDB db文件格式中受支持。对于Access 2007,您可能正在使用不支持ULS的较新ACCDB格式


    如果您实际将MDB与ULS一起使用,则需要使用不同的方法来打开数据库。您可以使用您的ULS用户名和密码,然后在该工作区内调用
    OpenCurrentDatabase

    将尝试它,对用户名有什么建议吗?对,我在这一点上感到困惑。。。见修改后的答案。那么您使用的是MDB和ULS吗?