在VB 6 IDE中访问系统注册表时出错

时间:2020-03-06 14:27:17  来源:igfitidea点击:

在Visual Basic 6中,当我尝试访问"项目">"引用"时,将引发错误:

Error accessing system registry

我是:

  • 以本地计算机管理员身份登录
  • 运行Windows XP Professional和
  • 我可以执行regedt32.exe并访问所有注册表项。

VB6已作为本地管理员安装。

知道为什么会这样吗?

我之前已经访问过该帖子。我正在运行Crystal Report 8.5,它应该已经解决了该问题,但是显然我仍然安装了8.5. 我也尝试过重新安装Crystal报表,但对此问题没有运气。

解决方案

你有试过吗?基本上,这似乎是一个水晶报道的问题。希望能有所帮助。

我们可以尝试使用Process Monitor来查看访问了哪些注册表项。

我在用于VB6开发的机器上得到了这个。我已经从VB6构建了许多COM DLL(没有二进制兼容性),并且在注册表中积累的残骸最终变得太多了。

看一下注册表的大小以及我们设置的限制。我将注册表大小增加了一倍,然后去寻找一个良好的注册表悬停对象。

根据我们拥有的Windows操作系统(我有Windows 7 Enterprise),我们可能想要尝试为REGTLIB.EXE(位于C:\ Windws)授予管理员权限。右键单击REGTLIB.EXE文件。从弹出菜单中选择"属性"。然后选择"兼容性"选项卡。在"兼容性"选项卡上,选中/选中"以管理员身份运行该程序"复选框。单击确定保存更改。它可能会为我们解决问题。它为我工作。祝你好运。

如果我们正在运行Office 2010(测试版),则Word(显然)会写一个受限制的注册表项。扫描注册表时,VB引发错误。我的关键是:
HKCR \ TypeLib {00020905-0000-0000-C000-000000000046} \ 8.5

对于进程名称->" vb6.exe"和结果->" ACCESS DENIED"的Regmon过滤器。帮助快速找到它。

使用PSToosl(PSEXEC)修复了该问题,以运行注册表编辑器(命令行为
psexec -i -d -s c:\ windows \ regedit.exe
从以管理员身份运行命令行。
高温超导
吉姆
编辑/ PS我在Windows 7(x64)框上。提升的权限需要PSTools解决方案。 XP可以少花点钱。

这是Microsoft提供的解决方案。它引用了Crystal Reports问题,但是该解决方案仅使用regedit32来遍历HKEY_CLASSES_ROOT \ TypeLib和HKEY_CLASSES_ROOT \ CLSID注册表分支,以使键变暗并更正这些键的安全性。如果regedit32无法访问密钥,也有修复安全性的说明。商品号269383