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

Windows 7 如何在64位Windows 7上调试VB6 IIS应用程序,windows-7,vb6,ide,iis-7.5,iis-metabase,Windows 7,Vb6,Ide,Iis 7.5,Iis Metabase,我需要能够在Windows 7 64位上调试Visual Basic 6 IIS应用程序。不仅仅是为了一个问题,而是为了持续发展 尝试调试会导致WebClass运行时出现错误“出现未指定的错误” 如果我不调试并简单地访问已编译的webclass,页面加载就可以了。因此,我不认为应用程序的注册/配置有任何问题,但这与Windows操作系统安全性有关,阻止VB6 IDE连接到IIS并允许其进行调试 以下是我尝试过的所有东西: 禁用用户帐户控制(UAC)并重新启动 修改了计算机调试管理器(MDM)的D

我需要能够在Windows 7 64位上调试Visual Basic 6 IIS应用程序。不仅仅是为了一个问题,而是为了持续发展

尝试调试会导致WebClass运行时出现错误“出现未指定的错误”

如果我不调试并简单地访问已编译的webclass,页面加载就可以了。因此,我不认为应用程序的注册/配置有任何问题,但这与Windows操作系统安全性有关,阻止VB6 IDE连接到IIS并允许其进行调试

以下是我尝试过的所有东西:

  • 禁用用户帐户控制(UAC)并重新启动
  • 修改了计算机调试管理器(MDM)的DCOM组件安全性,并分配了“所有人”启动和激活权限
  • 手动添加“70F214BA-94E2-4bdf-8F30-32CB4A905E4D”的DCOM条目,该条目是VB6 IDE,并分配了“所有人”启动和激活权限
  • 禁用的Windows防火墙
  • 在Windows XP SP3的兼容模式下以管理员身份运行应用程序(VB6.exe)
  • 创建了一个新的IIS应用程序池,其标识设置为管理员帐户。将应用程序管道模式设置为classic并启用32位旧式应用程序支持
  • 这耗尽了我丰富的经验去尝试。如果我创建一个VB6 Windows应用程序或ActiveX控件,我可以轻松地启动和调试

    我在WindowsServer2003上遇到了一个非常类似的问题,尽管W2K3的新安装解决了这个问题

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

    DCOM出现错误“1326”,无法登录域\用户以运行服务器: {70F214BA-94E2-4BDF-8F30-32CB4A905E4D}

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

    我要提供的唯一额外信息是,Windows 7 64位正在VM中运行,尽管我在尝试调试时被远程控制到控制台。我在没有控制台连接的虚拟机上调试时遇到问题

    如果有人能提供任何进一步的建议,我将不胜感激


    如果有人能够解决这个问题,并成功地在Windows7操作系统上调试IIS web应用程序,描述了必要的设置,我将提供当前300分的奖励

    您能否复制发送到应用程序VB6部分的信息,并从控制台进行测试


    我的意思是,这很恶心,但我们谈论的是调试一个混合IIS VB6应用程序

    你考虑过写日志文件吗?这非常简单,您可以从代码最有可能导致错误的地方开始。我建议创建一个包含一些参数的函数,比如子/函数名、Err对象和可选的额外字符串,这样您就可以包含额外的信息,比如代码所处的步骤。在错误处理程序中,调用传递参数的函数。

    不知道这是否有助于进一步。。我正在研究我自己使用的同一个问题

    在偶数查看器中,我看到: 计算机默认权限设置不会为具有的COM服务器应用程序授予本地激活权限

    CLSID 
    {08855658-7A0B-4EF9-99B2-0AF875B3E62A}
    

    从地址LocalHost(使用LRPC)发送到用户NT AUTHORITY\IUSR SID(S-1-5-17)。可以使用组件服务管理工具修改此安全权限

    …所以我尝试将本地激活授予“所有人”-只是想看看我是否能让它消失-我不能

    然后,我在组件服务/my Computer(properties)COM安全、启动和激活权限中默认授予本地激活

    我仍然无法调试,但在事件查看器中不再出现错误。在浏览器中,我得到

    Server object error 'ASP 0178 : 80070005'
    
    Server.CreateObject Access Error
    
    /app.asp, line 4
    
    检查权限时调用
    Server.CreateObject
    失败。拒绝访问此对象

    上面的CLSID是我的vb6应用程序,但注册表指向vb6debug.dll(看起来正确)。程序匹配等

    已向vb6debug.dll和其他文件上的所有人授予权限


    下一步是procmon或类似的东西,看看会发生什么。

    伙计,我能同情你吗。我花了将近3个人天的时间在这个问题上,仍然没有一个我非常满意的解决方案,但它确实有效,所以我“放弃”了寻找正确的解决方案,并继续这样做,因为我不能再浪费任何资源时间了

    在IIS管理器下,单击虚拟目录->身份验证
    -禁用匿名身份验证
    -启用基本身份验证

    浏览到应用程序,输入具有足够权限的域或工作站凭据,以便根据应用程序所在的文件系统安全设置使应用程序工作


    这实际上意味着每次我第一次开始调试时都必须向virtdir进行身份验证,但最终让调试再次正常运行所付出的代价很小。

    听起来好像你想在创建应用程序实例时在调试器中启动VB6 IDE,但这是失败的。您是否尝试过在调试模式下启动VB6 IDE来承载COM组件,在源代码中设置断点,然后查看访问使用该组件的页面是否会导致调试器中的断点被命中?也就是说,将VB6 IDE的激活从循环中去掉——让它运行应该只会导致应用程序的CLSID指向IDE的运行时实例作为COM主机


    我已经有很长时间没有使用VB6开发了,所以一些细节可能很粗略,但我确实记得调试COM服务器需要一些技巧,其中一个解决方案是运行一个单独的VB实例作为COM进程外服务器主机。

    我想你可以非常肯定,微软不想让它成为一个问题
    Server object error 'ASP 0178 : 80070005'
    
    Server.CreateObject Access Error
    
    /app.asp, line 4