如何在c++builder中调试ISAPI(IIS5.0+window2000)

最近做一个Web模块,需要做成ISAPI。ISAPI的调试需要很多技巧,我在网上找了很多文章,大多数都不是很完整,经过长时间的研究,终于总结出以下一些经验。在此与大家分享。

调试过程按照以下步骤:

1、打开 “Internet信息服务”,在你的web服务器上右击,弹出菜单中选择单击属性。(下图1)

图1

2、在“主目录”页面,设置“应用程序保护”为“低(IIS进程)”。如下图2

图2

这样IIS 就会把ISAPI的DLL导入它的进程内部,允许调试。用同样的方法设置调试的DLL所在的虚拟目录。

注意:如果不设为“低(IIS进程)”,你将会无法调试。

3、打开管理工具->服务 ,找到以下几个服务,将其停止,并且设置它的启动方式为“手动”。

  • Simple Mail Transport Protocol (SMTP)
  • World Wide Web Publishing Service
  • FTP Publishing Service
  • IIS Admin Service

    如果重启后IIS Admin Service在“已启动”状态,你就需要将其启动方式设为“禁用”。然后再次重启,看看它是否会启动。在IIS Admin Service启动的时候,是无法正常调试的。

    最近做一个Web模块,需要做成ISAPI。ISAPI的调试需要很多技巧,我在网上找了很多文章,大多数都不是很完整,经过长时间的研究,终于总结出以下一些经验。在此与大家分享。

    调试过程按照以下步骤:

    1、打开 “Internet信息服务”,在你的web服务器上右击,弹出菜单中选择单击属性。(下图1)

    图1

    2、在“主目录”页面,设置“应用程序保护”为“低(IIS进程)”。如下图2

    图2

    这样IIS 就会把ISAPI的DLL导入它的进程内部,允许调试。用同样的方法设置调试的DLL所在的虚拟目录。

    注意:如果不设为“低(IIS进程)”,你将会无法调试。

    3、打开管理工具->服务 ,找到以下几个服务,将其停止,并且设置它的启动方式为“手动”。

  • Simple Mail Transport Protocol (SMTP)
  • World Wide Web Publishing Service
  • FTP Publishing Service
  • IIS Admin Service

    如果重启后IIS Admin Service在“已启动”状态,你就需要将其启动方式设为“禁用”。然后再次重启,看看它是否会启动。在IIS Admin Service启动的时候,是无法正常调试的。

    4、打开管理工具->本地安全策略,在“本地策略->用户权力指派”中找到“以操作系统方式操作”的策略,双击,添加你当前的用户。如下图3

    图3

    6、重启电脑,让修改生效。

    7、将以下内容复制后保存为后缀reg的文件。双击合并入注册表。

    最近做一个Web模块,需要做成ISAPI。ISAPI的调试需要很多技巧,我在网上找了很多文章,大多数都不是很完整,经过长时间的研究,终于总结出以下一些经验。在此与大家分享。

    调试过程按照以下步骤:

    1、打开 “Internet信息服务”,在你的web服务器上右击,弹出菜单中选择单击属性。(下图1)

    图1

    2、在“主目录”页面,设置“应用程序保护”为“低(IIS进程)”。如下图2

    图2

    这样IIS 就会把ISAPI的DLL导入它的进程内部,允许调试。用同样的方法设置调试的DLL所在的虚拟目录。

    注意:如果不设为“低(IIS进程)”,你将会无法调试。

    3、打开管理工具->服务 ,找到以下几个服务,将其停止,并且设置它的启动方式为“手动”。

  • Simple Mail Transport Protocol (SMTP)
  • World Wide Web Publishing Service
  • FTP Publishing Service
  • IIS Admin Service

    如果重启后IIS Admin Service在“已启动”状态,你就需要将其启动方式设为“禁用”。然后再次重启,看看它是否会启动。在IIS Admin Service启动的时候,是无法正常调试的。

    4、打开管理工具->本地安全策略,在“本地策略->用户权力指派”中找到“以操作系统方式操作”的策略,双击,添加你当前的用户。如下图3

    图3

    5、重启电脑,让修改生效。

    6、将以下内容复制后保存为“将IIS 设置为普通进程.reg”。双击合并入注册表。这样你才能够进行调试。如果你的IIS安装在其他目录,则需要做一些修改。这里的默认目录为“ C:/WinNT/system32/inetsrv”

    REGEDIT4

    [HKEY_CLASSES_ROOT/AppID/{61738644-F196-11D0-9953-00C04FD919C1}]
    "LocalService"=-
    "RunAs"=-

    [HKEY_CLASSES_ROOT/AppID/{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}]
    "LocalService"=-
    "RunAs"=-

    [HKEY_CLASSES_ROOT/AppID/{A9E69610-B80D-11D0-B9B9-00A0C922E750}]
    "LocalService"=-
    "RunAs"="Interactive User"


    [HKEY_CLASSES_ROOT/ClsID/{61738644-F196-11D0-9953-00C04FD919C1}]
    "LocalService"=-

    [HKEY_CLASSES_ROOT/ClsID/{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}]
    "LocalService"=-

    [HKEY_CLASSES_ROOT/ClsID/{A9E69610-B80D-11D0-B9B9-00A0C922E750}]
    "LocalService"=-


    [HKEY_CLASSES_ROOT/ClsID/{61738644-F196-11D0-9953-00C04FD919C1}/LocalServer32]
    ""="c://winnt//system32//inetsrv//inetinfo.exe -e w3svc"

    [HKEY_CLASSES_ROOT/ClsID/{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}/LocalServer32]
    ""="c://winnt//system32//inetsrv//inetinfo.exe -e w3svc"

    [HKEY_CLASSES_ROOT/ClsID/{A9E69610-B80D-11D0-B9B9-00A0C922E750}/LocalServer32]
    ""="c://winnt//system32//inetsrv//inetinfo.exe -e w3svc"


    [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/IISADMIN]
    "Start"=dword:3

    [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MSDTC]
    "Start"=dword:3

    [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W3SVC]
    "Start"=dword:3

    你可以使用以下注册表代码把IIS恢复为以服务方式运行。

    REGEDIT4

    [HKEY_CLASSES_ROOT/AppID/{61738644-F196-11D0-9953-00C04FD919C1}]
    "LocalService"="IISADMIN"
    "RunAs"=-

    [HKEY_CLASSES_ROOT/AppID/{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}]
    "LocalService"="IISADMIN"
    "RunAs"=-

    [HKEY_CLASSES_ROOT/AppID/{A9E69610-B80D-11D0-B9B9-00A0C922E750}]
    "LocalService"="IISADMIN"
    "RunAs"=-


    [HKEY_CLASSES_ROOT/ClsID/{61738644-F196-11D0-9953-00C04FD919C1}]
    "LocalService"="IISADMIN"

    [HKEY_CLASSES_ROOT/ClsID/{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}]
    "LocalService"="IISADMIN"

    [HKEY_CLASSES_ROOT/ClsID/{A9E69610-B80D-11D0-B9B9-00A0C922E750}]
    "LocalService"="IISADMIN"


    [-HKEY_CLASSES_ROOT/ClsID/{61738644-F196-11D0-9953-00C04FD919C1}/LocalServer32]


    [-HKEY_CLASSES_ROOT/ClsID/{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}/LocalServer32]


    [-HKEY_CLASSES_ROOT/ClsID/{A9E69610-B80D-11D0-B9B9-00A0C922E750}/LocalServer32]

    [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/IISADMIN]
    "Start"=dword:3

    [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MSDTC]
    "Start"=dword:2

    [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W3SVC]
    "Start"=dword:2

    8、C++builder上的设置:

    a)在你的ISAPI DLL 项目中,打开project->Options.页面,"Directories/Conditionals" 分页上,设置"Output directory" 为 "C:/Inetpub/Scripts"或者你的ISAPI DLL 放置的页面。打开所有Debug Information( Complier 分页上点 “Full debug ”按钮)。

    b)打开Run->Parameters 页面,设置Host Application 为 "c:/winnt/system32/inetsrv/inetinfo.exe" 或者其他你的IIS的安装目录。 设置Parameters 为"-e w3svc" (不包含双引号)

    c)现在你就可以开始正式调试,设置断点,运行程序,然后通过浏览器访问触发,程序就会停在断点处。就像调试一般的应用程序一样。

    d)你可以按Ctrl-F2 停止web 服务和调试进程。

    在delephi中的调试与c++builder 中几乎完全一样。

    [文章结束]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值