在VC环境中调试ISAPI程序

转自:http://vivobear.blog.163.com/blog/static/37485108200971734353603/

公司现在还要维护一个N年前的ISAPI的程序,调试起来那个麻烦啊,死活断点进不去,折腾了半天,google了半天最后总算是找到问题了,原来是没有把IIS的 Application protection 设置为 Low (IIS process)
今天特意把它记录下来,以备以后查询之。。。



接下来按照下面的步骤:
1、IIS的目录(根目录、虚拟目录)运行级别改为低(默认为中)
控制面板->管理工具->Internet信息服务。在默认站点上单击右键->属性->主目录(标签)->应用程序保护(N),将中(共用)改为低(IIS进程)。执行权限改为“本和可执行文件”。
用同样的方法修改你新建的虚拟目录的运行级别。

2、修改本地安全策略属性
控制面板->管理工具->本地安全策略->本地策略->用户权利指派。
a、找到“以操作系统方式操作”,双击或者右键选属性,弹出对话框后,点“添加用户或组”按钮,在输入文字区域中输入管理员帐户(又称中超级用户),“检查名称”,“确定”添加。比如我现在登陆的帐号是Guyue,“检查帐号”之后就出现A7B4931A85554A0/Guyue, A7B4931A85554A0是我的计算机名称,Guyue是当前登陆帐户,是除Administrator之外的我的管理员帐户。“确定”添加。
b、找到“允许计算机和用户帐户被信任以便于委托”,照a的方法添加管理员帐户。

3、打开VC6.0,不需要打开任何工程。
菜单栏[Build]->[Start Debug]->Attach To Process
勾选“Show System Process”,找到inetinfo,按OK键添加到该进程。
在菜单栏[Project]->[Settings]或者直接按快捷键Alt+F7。
会看到一个General和一个Debug标签,选择Debug标签。Category下拉列中有两个选项,General和Additional DLLs,选择Additional DLLs。在Modules中加入你要调试的DLL,勾选Try to locate others DLLs,按OK确定保存。
4、打开你的ISAPI工程中的一个CPP文件,看能不能设置断点,如果不能,按shift+F5键退出调试状态。进入下一步。如果退出之后继续[Build]->[Start Debug]->Attach To Process,这个时候会提示,该工程不包含任何调试信息。如果能设置断点,则直接进入第六步。

5、打开你的ISAPI工程中,确定你的编译状态为Debug状态,确定你Link(输出)的DLL和你在第三步Modules中保存的DLL为同一个文件。Rebuild一下。

6、菜单栏[Build]->[Start Debug]->Attach To Process
勾选“Show System Process”,找到inetinfo,按OK键附加到inetinfo进程。打开ISAPI工程中的一个CPP文件,最好是程序的入口文件,在程序的入口处设置断点,比如我设置的就是CIsapiWtExtension::InitInstance(...)和DWORD CIsapiWtExtension::HttpExtensionProc(...)程序一旦开始运行,马上就可以在这里截获。

7、打开IE,打开你调用该DLL的站点,发出IE请求,VC应该就会在你设置断点的地方拦截到这个请求对当前DLL的操作了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值