如何在Windows 7 64位上调试VB6 IIS应用程序

War*_*Rox 9 ide vb6 windows-7 iis-7.5 iis-metabase

我需要能够在Windows 7 64位上调试Visual Basic 6 IIS应用程序.不只是针对单个问题,而是针对持续发展.

尝试调试会导致WebClass运行时出现错误"发生未指定的错误".

如果我不调试并只是访问已编译的webclass页面加载就好了.因此,我不认为应用程序的注册/配置有任何问题,但这与Windows操作系统安全性有某种关系,阻止VB6 IDE挂钩到IIS并允许它进行调试.

以下是我尝试过的所有内容:

  1. 禁用用户帐户控制(UAC)并重新启动.
  2. 修改了机器调试管理器(MDM)的DCOM组件安全性,并为其分配了"Everyone"启动和激活权限.
  3. 手动为"70F214BA-94E2-4bdf-8F30-32CB4A905E4D"添加了DCOM条目,这是VB6 IDE并分配了"Everyone"启动和激活权限.
  4. 已禁用Windows防火墙
  5. 使用以管理员身份运行的选项,在Windows XP SP3的兼容模式下运行应用程序(VB6.exe).
  6. 创建了一个新的IIS应用程序池,其标识设置为管理员帐户.将应用程序管道模式设置为经典和启用的32位遗留应用程序支持.

这耗尽了我对尝试事物的丰富经验.如果我创建VB6 Windows应用程序或ActiveX控件,我可以轻松启动和调试.

我在Windows Server 2003上遇到了类似的问题,尽管全新安装的W2K3解决了这个问题.

在Windows系统事件查看器日志中,事件ID 10004有2个重复条目,如下所示:

DCOM收到错误"1326",无法登录DOMAIN\User以运行服务器:{70F214BA-94E2-4BDF-8F30-32CB4A905E4D}

DOMAIN\User是我的域帐户,上面提到的GUID是我为VB ASP调试添加的DCOM条目.

我必须提供的唯一额外信息是Windows 7 64位在VM中运行,尽管我在尝试调试时远程控制台.我在没有控制台连接的情况下在VM上调试时遇到问题.

如果有人可以提供任何进一步的建议,我会非常感激.

如果有人能够解决这个问题,并在Windows 7操作系统上成功调试IIS Web应用程序,描述必要的设置,我将提供300点的当前赏金!

yub*_*ben 6

我最近在Windows 7 64位计算机上遇到了同样的问题.对我有用的解决方案是检查Windows事件日志(系统)以查找特定的DCOM错误.这是我的错误:

机器默认权限设置不授予本地激活权限与CLSID {} 17C2D338-9569-4022-8AF2-52A3A124F22D和APPID {} 17C2D338-9569-4022-8AF2-52A3A124F22D COM服务器应用程序向用户NT AUTHORITY\IUSR来自地址LocalHost的SID(S-1-5-17)(使用LRPC).可以使用组件服务管理工具修改此安全权限.

对我来说,关键是给IUSR内置帐户启动和激活权限.attemtpting给这个用户权限个别DCOM组件和失败后,我决定将用户添加到本机的默认DCOM权限.你可以这样做:

运行dcomcnfg.右键单击Console Root/Component Services/Computers/My Computer节点.选择属性.选择"COM安全"选项卡.单击"访问权限"组下的"编辑默认值".点击"添加".输入事件日志中指示的用户(我的是IUSR).单击确定.重复"启动和激活权限"组.在所有对话框中选择"确定".

我没有重启我的机器以使这些设置生效.我用同样的方法来调试VB6的dll,我在XP上使用,即运行VB6(无人值守执行)下的DLL,设置一个断点,导航到访问的DLL一个网页,并等待被击中断点.希望这可以帮助.


Ily*_*sov 3

我相信在任何比 Windows XP 更新的 Windows 版本上都不可能IIS Application在 IDE 中调试 VB6(可能情况与 Windows 服务器版本类似)。该问题的根本原因似乎是 IIS 6 和 IIS 7+ 之间的主要差异。当然,没有关于该主题的官方文档,因此我将在下面详细介绍。

首先,回顾一下这个问题是有意义的。许多好人似乎忘记了这个IIS Application术语在这种情况下指的是特殊类型的 VB6 项目。我能够在 Win7 Ultimate x64 SP1、Win7 Ultimate x86 SP1 和 Vista Enterprise x86 SP2 上按照以下步骤重现该错误:

  1. 安装VB6和SP6。
  2. 创建新IIS Application项目: 在此输入图像描述
  3. 保存项目。
  4. 选择“运行”->“开始”(F5)来调试项目。
  5. 在“调试”选项卡上选择任意选项,然后按“确定”: 在此输入图像描述

之后,VB6 IDE 中立即出现错误消息:

在此输入图像描述

让我们看看在 Windows XP 上执行相同的场景时会发生什么。当开始调试 VB6 时IIS Application

  • 如果 VB6 IDE 未运行,则启动 IIS 服务:

在此输入图像描述

  • VB6 IDE提示选择IIS虚拟目录:

在此输入图像描述

这一切都发生在Windows XP激活之前。 WebClass在 Windows 7 上,进程不会到达此阶段。

很明显,VB6 IDE 尝试在 IIS 中执行一些管理任务,以便能够调试WebClass. 人们可以借助Process MonitorAPI Monitor进行更深入的研究。很明显,VB6.exe 依赖于 IIS Admin Service 的 COM 接口。坏消息是,与以前的版本不同,IIS 7+ 不使用元数据库,并且 IIS 7+ 中没有 IIS 管理服务。IIS Metabase and IIS6 compatibility理论上,可以安装一个组件,该组件应该使使用 Metabase 的应用程序能够继续与 IIS 7+ 一起工作:

在此输入图像描述

不幸的是,安装它并不能解决问题。

有人建议您的问题可能是由于 COM 组件的启动和激活权限不足引起的。恐怕所有这些建议都是徒劳的。此类错误始终伴随着系统事件日志中的相关错误事件。本案中不存在此类事件。