13

在 Visual Basic 6 中,当我尝试访问Project > References时,它会引发错误:

访问系统注册表时出错

我是:

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

VB6 以本地管理员身份安装。

知道为什么会这样吗?


我正在运行水晶报告 8.5,它应该已经解决了这个问题,但显然我仍然遇到安装 8.5 的问题。我还尝试重新安装水晶报告,但在这个问题上没有运气。

4

13 回答 13

22

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

于 2009-11-12T18:36:43.780 回答
13

对我来说,这很有效:

  1. 转到 C:\Program Files\Microsoft Visual Studio\VB98
  2. 通过右键单击更改VB6.EXE的属性->兼容性在权限级别部分,选中以管理员身份运行此程序选项
于 2016-10-29T15:51:44.500 回答
5

如果您运行的是 Office 2010(测试版),Word(显然)会写入一个受限的注册表项。VB 在扫描注册表时抛出错误。我的关键是:

HKCR\TypeLib\{00020905-0000-0000-C000-000000000046}\8.5

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

使用 PSToosl (PSEXEC) 修复它以运行注册表编辑器。命令行是,

psexec -i -d -s c:\windows\regedit.exe

psexec需要以提升的权限运行。


Jim 编辑:我在 Windows 7 (x64) 机器上。提升权限需要 PSTools 解决方案。XP可以少一点。

于 2009-12-10T21:46:11.840 回答
1

我在用于 VB6 开发的机器上得到了这个。我一直在从 VB6 构建大量 COM DLL(没有二进制兼容性),而在注册表中建立的杂乱无章最终变得太多了。

查看注册表的大小以及您设置的限制。我将注册表大小翻了一番,然后去寻找一个好的注册表胡佛。

于 2008-09-21T02:50:38.577 回答
1

您可以尝试Process Monitor以查看访问了哪些注册表项。

于 2008-09-19T22:05:35.103 回答
1

这是微软的解决方案。它引用了 Crystal Reports 问题,但该解决方案仅使用 regedit32 遍历HKEY_CLASSES_ROOT\TypeLibHKEY_CLASSES_ROOT\CLSID注册表分支以获取暗键并更正这些键的安全性。如果 regedit32 无法访问密钥,也有修复安全性的说明。文章编号:269383

于 2009-12-11T20:18:45.223 回答
1

在 Windows 7 中,转到开始菜单,然后右键单击“Microsoft Visual Basic 6”,然后选择属性并从出现的对话框中单击兼容性,然后勾选“以管理员身份运行此程序”。

于 2015-08-19T14:14:22.923 回答
0

这是VB6安装问题。尝试在您的系统上重新安装 VB6。否则,使用“以管理员身份运行”打开“visual studio 6.0”。然后通过 - 新项目 -> 现有选项卡打开/浏览您的项目 .vbp 文件。

于 2013-12-27T22:07:41.517 回答
0

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

于 2008-09-19T18:43:28.570 回答
0

也许值得一试“用户帐户控制设置”。问候,

在此处输入图像描述

于 2012-10-17T20:15:18.100 回答
0

当我在 Win7-64 上安装 VB6(使用搜索引擎很容易找到的说明)时,它运行良好。UAC 已关闭——即设置为“从不通知”。

几周后,我打开了 UAC——即将它设置为默认值。由于“访问系统注册表时出错”问题,VB6 无法编译。不幸的是,再次关闭它并没有帮助。显然,打开它所造成的损害是不可逆转的。我无法解释为什么会这样,但这是我的经验。

在关闭 UAC 的同时授予 REGTLIB.EXE 管理权限听起来是个好主意,但这对我也不起作用。

最后,使用此处其他帖子中描述的 Process Monitor 和 PsTools 有效。但是,我不得不将大部分注册表的完全控制权交给所有人。这不仅仅适用于隔离键。看来编译器需要为主要节点添加键,所以我不得不打开这些整个节点。

除了完成这些步骤需要花费数小时这一事实之外,我现在比尝试通过 UAC 提高安全性之前暴露的要多得多,但是,我需要 VB6,并且没有看到没有新计算机的其他解决方案。

教训:不要将 UAC 与 VB6 一起使用。除非你已经到达这里,否则为时已​​晚。

于 2013-06-13T17:58:05.130 回答
0

我已经解决了这个问题。但是上面的建议都没有奏效。我所做的是让每个人都完全控制SYSTEM注册表中的密钥。这会造成安全漏洞。我正在运行带有 vb6 服务包 6B 的 64 位 Windows 7。

于 2018-01-08T17:49:46.837 回答
0

我正在运行 64 位 Windows 10 Pro(10.0.16299 Build 16299)。尝试编译 VB6 DLL 时出现此错误。

我在这篇文章中看到了几个关于以管理员身份在兼容模式下运行的答案。我想我会首先尝试在Windows XP (sp2) 的兼容模式下运行。选中该框后,我能够编译我的 DLL。我不需要以管理员身份运行。

于 2018-02-24T22:14:29.363 回答