access不能打开注册表关键字错误处理方法(80004005错误)

错误信息如下:
----------------------------------
Microsoft OLE DB Provider for ODBC Drivers 错误 ''''80004005''''
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 ''''Temporary (volatile) Jet DSN for process 0x728 Thread 0x854 DBC 0x276fb44 Jet''''。
----------------------------------

下面几个可能原因:
1。微软已经不更新ODBC,需要改用JET的方式连接ACCESS数据库文件;
2。系统目录的权限发生的变更。
也有老帖子说什么原因是:“ACCESS数据库文件是ACCESS97版本的”,这个无须考虑,我用的是ACCESS2000数据库。

对于第一个原因,原来的连接字串如下:
--ODBC连接方式------------------------
mdbpath=server.MapPath("my.mdb.asp")
CnnStr = "DBQ=" & mdbpath & ";DRIVER={Microsoft Access Driver (*.mdb)};uid=admin;pwd="
-------------------------------------

改用JET连接后连接字串为:
---JET连接方式---------------------
CnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;User Id=admin;Data Source="& mdbpath &" '''';Password=luntanbbs"
-------------------------------------

测试过后无效,虽然提示的错误信息有点不同:
----------------------------------
Microsoft JET Database Engine 错误 ''''80004005'''' 未指定的错误
----------------------------------

最后检查第二个原因:系统目录权限不足。经询问,原来由于出于安全的考虑一同事把该服务器的WINNT目录设置为 Administrators、system “完全控制”,users 只读。
但是,按道理,这样的权限设置,ODBC的驱动程序处于 winntsystem32odbcjt32.dll 这个也是可读的,难道是因为缺少“执行”权限?
我把 winntsystem32目录下所有以odbc开头的DLL文件全部授予“执行”权限,发现还是一样的错误信息。跟着我索性把整个 system32 目录设成 everyone 可执行,可是一测试依然不行。
难道是还有其他文件被ODBC或JET调用但又不在这个system32目录下且又没有得到充分授权而导致失败?
正在想的时候,蓦然瞥见 winnttemp 目录。嘿,我把 temp 目录设置成 everyone 可“写入”看看。

一测试,嘿,成了。使用ODBC连接方式的程序,成功的读取更新ACCESS数据库中的记录。

(0)

相关推荐

  • ADODB连接access是出现 80004005 错误的解决方法

    问题的原因: 我的电脑的access是使用中文作为数据库的排序语言.客户的机器没有按转中文,所以adodb不能正常使用access数据库.有不可能要求客户在他所有的电脑里安装中文,所以只有在我这里解决. 解决方案: 1. 用access打开数据库: 2. 在菜单上选择Tools->Options: 3. 在Options里,选择General那个页面: 4. 在General那个页面里,有一个选项是New Database Sort Order把它的值设置为General,然后按确定. 5. 在

  • 解决Access出现Microsoft JET Database Engine (0x80004005)未指定的错误

    Microsoft JET Database Engine (0x80004005)未指定的错误,这个错误只有在使用Access数据库时才能出现   出现以上问题,可以使用以下步骤进行解决问题:   1.系统可能没有注册msjetoledb40.dll,解决办法是    点 开始--->运行, 输入 regsvr32 msjetoledb40.dll, 回车即可: 2.数据库所在文件夹权限    打开办法是:打开我的电脑,然后点菜单上的"文件夹选项"--->查看,然后把&q

  • Access数据库提示OleDbException (0x80004005): 操作必须使用一个可更新的查询

    说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Data.OleDb.OleDbException: 无法从指定的数据表中删除. 源错误: 行 37: comm.CommandText = sqlstr; 行 38: //comm.Prepare(); 行 39: cout = comm.ExecuteNonQuery(); 行 40: 行 41: conn.Close(); 源文件:

  • access不能打开注册表关键字错误处理方法(80004005错误)

    错误信息如下: ---------------------------------- Microsoft OLE DB Provider for ODBC Drivers 错误 ''''80004005''''[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 ''''Temporary (volatile) Jet DSN for process 0x728 Thread 0x854 DBC 0x276fb44 Jet''''. -

  • ASP不能打开注册表关键字错误 '80004005'的解决方法

    如果出现如下错误: Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0xa78 Thread 0xadc DBC 0x26a0cfc Jet'. 第一步:请设置数据库文件为可以让用户IUSR_Machine(匿名访问使用帐户)有可写权限

  • ASP不能打开注册表关键字错误 '80004005'的解决方法

    如果出现如下错误: Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0xa78 Thread 0xadc DBC 0x26a0cfc Jet'. 第一步:请设置数据库文件为可以让用户IUSR_Machine(匿名访问使用帐户)有可写权限

  • 如何打开注册表编辑器

    要手工编辑注册表,就要求打开注册表编辑器,这是必然的.那么如何打开注册表编辑器呢?在NT架构的系统上有什么方法可以打开新版本的注册表编辑器呢?本文将详细回答你的问题. 首先出场的是Win98/Me,因为Win98和WinMe没有大的区别,所以这里放在一起讲述.在Win98/Me里面的注册表编辑器只有一种,就是最"原始"的那一种.之所以说他原始是因为他没有任何安全限制,也就是说它的注册表编辑器可以被任意一个用户打开,并没有任何权限限制.这主要是因为Win98/Me的使用对象是一般的单机用

  • 打开注册表,看优化软件在“搞什么鬼”

    Windows的注册表就像一个地下迷宫,每当我们感觉对它了解一些的时候,却发现它还包含着一个新的迷宫--我们拥有很多修改注册表的工具,但它们总是在注册表被软件修改之后才能用得到,怎么才能在注册表被改动的第一时间就发现呢?很多杀毒软件都忽视了对注册表的保护,而这往往是木马病毒滋生的温床!注册表是一个庞大的数据库,我们对它只有一个静态的了解.其实,了解注册表动态数据变化更有意义,因为几乎所有软件在安装和运行过程中,都会修改注册表数据,而这些注册表数据的变化很可能是有害的,例如木马程序添加的自启动数据

  • 解开注册表被锁的方法—注册表使用全攻略之四

    解开注册表被锁的方法-注册表使用全攻略之四 一.解锁方法: 1. 你可以在恢复注册表时,用F8进入选DOS模式或用 运行,C:>SCANREG/RESTORE  2. 你也可以用NotePad编辑一个文本文件,保存文件的时候用格式 xxxxxx.reg 在文件中打入以下: (空一行)REGEDIT 或 REGEDIT4 [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\ Policies\system"Disabl

  • DOS下对注册表的编程的方法

    在DOS方式下也能对注册表进行编程?是的.当您的Windows95/98因注册表问题而无法启动到图形界面时,您此时只有在DOS下对注册表进行手术了.因为注册表编辑器Regedit.exe其实是一个双栖型的程序,既可在DOS下运行,也可在Windows95/98下运行.许多用户可能已经知道在Windows下使用Regedit的方法,那么,要掌握DOS方式下对注册表的编程,首先要了解在DOS下如何使用注册表编辑器.  在DOS提示符下键入Regedit命令,将出现一个帮助屏幕.此屏幕给出了其命令行参

  • 用批处理删除注册表健值的方法分享

    一个基本的格式参考 reg delete KeyName [/v ValueName | /ve | /va] [/f] KeyName [\\Machine\]FullKey Machine 远程机器名 - 忽略当前机器的默认值. 远程机器上只有 HKLM 和 HKU. FullKey ROOTKEY\SubKey ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ] SubKey 所选 ROOTKEY 下的注册表项的全名. ValueName 所选项下的要删

  • python读取注册表中值的方法

    在Python的标准库中,_winreg.pyd可以操作Windows的注册表,另外第三方的win32库封装了大量的Windows API,使用起来也很方便.不过这里介绍的是使用_winreg操作注册表,毕竟是Python自带的标准库,无需安装第三方库. 下面的例子是通过Python获取Windows XP下已经安装的补丁号.Windows的补丁号都在"HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Updates"下,通过循环下面所有的目录节点,如果找

  • 解决IIS8.5中ASP上传大文件出现 Request 对象 错误 ASP 0104 : 80004005 错误的方法

    今天将一台服务器升级到了最新的IIS8.5,然后部署网站,上面有一个比较老的ASP站点发现了问题,上传稍大一点的文件就出错,传个几十K的文件到没有问题,我们都知道IIS默认上传文件大小是30M,而现在上传1M都有问题,下面给出解决方法. 上传不了的出错提示为:Request 对象 错误 'ASP 0104 : 80004005',原因是站点ASP的"限制属性"设置中"最大请求实体主体限制"默认只允许200K,将其改大一点就可以了,相关截图如下所示: 图中最大请求实体

随机推荐