访问access提示不能打开注册表关键字


关键词

访问access提示不能打开注册表关键字

摘要

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="
-------------------------------------

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的驱动程序处于 winnt\system32\odbcjt32.dll 这个也是可读的,难道是因为缺少“执行”权限?
我把 winnt\system32\目录下所有以odbc开头的DLL文件全部授予“执行”权限,发现还是一样的错误信息。跟着我索性把整个 system32 目录设成 everyone 可执行,可是一测试依然不行。
难道是还有其他文件被ODBC或JET调用但又不在这个system32目录下且又没有得到充分授权而导致失败?
正在想的时候,蓦然瞥见 winnt\temp 目录。嘿,我把 temp 目录设置成 everyone 可“写入”看看。

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





///////////////////////////////////////////


针对ODBC和JET两种连接连接方式,support.microsoft.com都有相关解决方案,摘录如下:

补充非常重要的一点:中国频道的好多虚拟主机对*.asp的mdb文件支持不好,也会出现这种错误(我是深受其害),把所有的*.ASP数据库名改回*.MDB试试。

第一种:----------ODBC连接方式------------------------
mdbpath=server.MapPath("my.mdb.asp")
CnnStr = "DBQ=" & mdbpath & ";DRIVER={Microsoft Access Driver (*.mdb)};uid=admin;pwd="
-----------------其错误内容如下-------------------------
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'。
-----------microsoft support的解释--------------------
http://support.microsoft.com/?id=295297
PRB:错误信息:0x80004005:General Error Unable to Open Registry Key(出现常规错误,无法打开注册表项)

症状
当访问连接到 Access 数据库的页面时,可能会在浏览器中收到以下错误信息:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x614 Thread 0x6c0 DBC 0x21dd07c Jet'.
(FileName), (LineNumber)
原因
用于访问页面的帐户无法访问 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC 注册表项。
解决方案
重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 (http://support.microsoft.com/kb/256986/) Microsoft Windows 注册表说明

警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。

1. 启动注册表编辑器 (开始-->运行-->Regedt32.exe)。
2. 在注册表中选择下面的项:
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC  
3. 在安全菜单上,单击权限。(注意:是regedt32程序的头部主菜单,不是右键菜单)
4. 为访问网页的帐户键入所需的权限。
5. 退出注册表编辑器。

状态
这种现象是设计导致的。
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
183060 (http://support.microsoft.com/kb/183060/) INFO:80004005 和其他错误信息的疑难解答指南
关键字:  kbprb KB295297

Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、
第二种:------------JET连接方式------------------------
CnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;User Id=admin;Data Source="& mdbpath &" ';Password=luntanbbs"
-----------------其错误内容如下-------------------------

Database Results Error
[Microsoft][ODBC Microsoft Access Driver]
General error
Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x3f8 Thread 0x764 DBC 0x2150064 Jet'.
-or-
Database Results Error
[Microsoft][ODBC Microsoft Access Driver]
The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
-----------microsoft support的解释--------------------
http://support.microsoft.com/?id=315456

CAUSE
This behavior can occur if incorrect NTFS permissions are defined for your system %TEMP% folder.
(系统临时文件夹的NTFS权限设置不当引起)
RESOLUTION
To resolve this problem, correct the permissions to the folder specified in your system's %TEMP% variable.

Note The Microsoft Jet database engine uses the System %TEMP% environment variable to specify the location to place temporary files that are created during Jet operations. On Microsoft Windows NT 4.0 these environment variables are defined for users and are not system-wide settings by default. For more information, please see the "More Information" section later in this article.

To correct the permissions of your systems %TEMP% variable, follow these steps:
(请如下一步步做)
 Locate your system's TEMP folder: (找到你的系统Temp目录,针对不同系统,操作如下)   Follow the appropriate steps for your version of Windows:   For Windows XP: On the Start menu, click Control Panel, click the Performance and  Maintenance icon, click the System icon, click the Advanced tab, and then click the Environment Variables button.
(winXP:开始-->控制面板-->性能与维护-->系统-->"高级"标签-->环境变量)
 For Windows 2000: right-click My Computer on your desktop, click Properties on the menu that appears, click the Advanced tab, and then click the Environment Variables button.
(Windows2000:我的电脑-->右键属性-->高级-->环境变量)
 For Windows NT: right-click My Computer on your desktop, click Properties on the menu that appears, and then click the Environment tab.(windowsNT:我的电脑-->右键属性-->环境变量)

   Find the TEMP variable in the list of System variables and note the folder that your system is using. (注意到你的系统正在使用什么临时文件夹)

Note An easier way to perform this task is to click Start , click Run, type %temp%, and then press Enter.(一个简易方法:开始-->运行-->运行"%temp%")

2. Start Windows Explorer.(打开该temp目录)
3. In Folders view, expand the path to your temporary folder.
4. Right-click the folder and click Properties on the shortcut menu.(在空白处点右键选择属性)
5. On the Security tab, add Everyone to the existing permissions, assign it Change permissions, and apply these new settings to all files and subfolders.(在安全标签中添加Everyone组的权限)
6. Click OK.

(附:如果文件夹属性里没有“安全”一项请:
打开“开始→控制面板→外观和主题→文件夹选项”,在“文件夹选项”对话框中单击“查看”选项卡,在“高级设置”下面,将“使用简单文件夹共享(推荐)”前的复选框清空,然后单击“确定”按钮退出。)

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文属于“洪哥笔记”原创文章,转载请注明来源地址:访问access提示不能打开注册表关键字:http://www.splaybow.com/post/accesscantreg.html

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

甲骨文公司介绍 »

相关文章:

phpadmin安装简单步骤  (2013/10/8 15:51:31)

phpadmin备份Mysql  (2013/10/8 12:17:52)

ACCESS2003不常用的连接方式  (2013/9/29 14:19:47)

DBA的职责  (2013/4/6 10:59:48)

SQL语句执行位操作  (2013/4/6 10:59:48)

数据库与数据仓库  (2013/4/6 10:59:48)

处理Oracle中杀不掉的锁  (2013/4/6 10:59:48)

DBA进阶之路  (2013/4/6 10:59:48)

触发器的概念  (2013/4/6 10:59:48)

数据库范式  (2013/4/6 10:59:48)