在DELPHI中用IIS或PWS调试ISAPI程序 (作者:王发军)

kxy kxy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
  调试ISAPI程序时,可暂时关闭WINDOWS对DLL文件的缓冲,使其能够被删除或覆盖。修改注册表使HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters\CacheExtensions=0 可以关闭WINDOWS对DLL文件的缓冲,这种情况下访问ISAPI应用程序的速度会大大变慢,因而该设置只限用于开发调试阶段;在调试结束后,不应再关闭WINDOWS对DLL文件的缓冲。笔者在实践中发现,上述方法在WINDOWS NT和IIS下是可行的,但是WINDOWS9X和PWS是却是不可行的,需要重新WWW发布服务才可以继续调试。下面笔者总结一下在PWS中开发调试ISAPI程序的经验,希望能对同行有所帮助。
  在为ASP开发COM控件以及开发一般ISAPI、WIN CGI程序时,程序调试过程中我们可以首先停止WWW发布服务,然后修改程序源码并生成可执行程序,再启动WWW发布服务测试可执行程序来查看程序运行结果。重复这个过程,我们就可以很方便地调试WWW应用程序了,而不用象以前一样把大量时间花在等待WINDOWS重新启动了。
  在下面的讨论中,我们假设WINDOWS所在目录为C:\Windows,PWS安装目录为C:\WIND
OWS\SYSTEM\inetsrv\。我们可以用“C:\WINDOWS\SYSTEM\inetsrv\pws.exe
/stop”命令来停止WWW发布服务并卸载所有被缓冲的ISAPI
DLL文件,可以用“C:\WINDOWS\SYSTEM\inetsrv\inetinfo.exe -e
w3svc”来启动WWW发布服务。建议大家在自己的桌面上建立两个快捷方式(如StopPWS、Star
tPWS),用于执行上面的两个命令来重新启动WWW发布服务。顺便提一下,在WINDOWS NT+IIS中,可以用“net stop IISAdmin”命令停止WWW发布服务来卸载所有被缓冲的ISAPI
DLL文件,用“net start w3svc”来启动WWW发布服务。
  在用DELPHI开发ISAPI/NSAPI应用程序时,我们甚至可以象调试普通应用程序一样,设置断点跟踪程序运行、用F7或F8单步跟踪、用Ctrl+F5查看某个变量的当前值,这无疑将大大有助于我们更好查找和修改程序中的错误,从而更快地完成开发任务。知道这个功能确实让笔者激动了一阵了,下面就讨论一下如何来实现这种调试功能。
  在打开ISAPI工程文件(PRJ文件)后,在DELPHI菜单中选择“Project->Options...”,设置Directories/Conditionals选项页中的Output Directory为你的DLL文件所在的测试目录(一般是具有“执行权限”的WWW目录如C:\INETPUB\WWWROOT\scripts);选择“Run->Parameters”,设置选项host application 为“C:\WINDOWS\SYSTEM\inetsrv\inetinfo.exe”,设置选项Run Parameters为“-e w3svc”,这样用F9或“Run->Run”运行工程时将同时启动WWW发布服务。
  现在假设我们已经完成了程序代码的编制工作并已经设置好断点准备跟踪,可以开始调试程序了。首先,应该确保WWW发布服务没有在运行(如果正在运行的话,系统状态区(System Tray)将会有“个人WEB管理器”(PWS)程序的图标出现,可以用“StopPWS”快捷方式将其停止,此时PWS程序图标将从系统状态区消失),否则就不能跟踪到程序中去了。用F9或“Run->Run”运行工程,PWS服务将随之启动(此时可以在系统状态看见PWS程序的图标),DELPHI窗体的标题将变为“Delphi YourProject[Running]”,然后在浏览器中以http://yourcomputername/YourDllPath/YourDll.DLL的方式运行ISAPI程序,DELPHI将会在代码编辑窗口中显示程序已运行到我们设置的断点,我们就可以象调试一般程序那样来调试ISAPI程序了,可以用F7或F8单步跟踪,也可以用Ctrl+F5查看变量的当前值。调试完毕后,就可以回到Delphi代码窗口修改程序源代码后重新开始调试了。注意,在调试过程中一定要等到程序运行完毕并在浏览器返回结果,不要在修改源代码时中止程序运行,也不要用“Ctrl-F2”或“Run->Program Reset”来中止程序运行,因为这样很容易导致WWW发布服务出现异常,这时候就只能重新启动WINDOWS或计算机了。
  以上方法在PWIN98+PWS4.0+DELPHI3.0和PWinNT4.0+IIS4.0+Delphi3.0下实验通过.
(作者:深圳润迅互联网公司 王发军 wangfajun@163.net http://wangfajun.163.net)
...全文

相关推荐

ISAPI调试工具

win9x用pws调试,不错,简单明了 win2000 iis5.0调试,调试方法也被我摸出来,直接启动c:\windows\system32\dllhost.exe,参数是/ProcessID:{61F35DA6-1B16-41F6-A136-547210577537}(具体ID从应用池中属性中可以查看到).或者用delphi 2007附加到iis进程里,这个办法笨一点,iis容易死掉. win2003 iis6.0与windows vista/7 iis7.0一起来就是多进程的,进程好象是复制出来的,启动的isapi在哪个进程里都不知道,没办法了吧?如果有办法的话告诉我一下. 好,哪就自己写一个支持iaspi的web服务吧.东拼西凑,把能拿来的代码都借用一下,终于完成了.共享给大家用用. 使用说明: 在delphi运行调试参数里填入本软件所在路径,开始调试运行,在本软件界面里把web目录指定一下.如果有多个虚拟目录可以全部直接写上.然后在ie里输入访问地址就搞定了,dll被调起了,断点起作用了吧.什么iis,apache走吧,不需要你们了.

lishuoquan

【CVE-2025-5419】(内附EXP) Google Chrome 越界读写漏洞【内附EXP】

Google Chrome曝出高危漏洞CVE-2025-5419,该漏洞存在于V8 JavaScript引擎中,允许攻击者通过恶意网页绕过沙箱防护执行任意代码。漏洞影响Windows、Mac和Linux平台的特定Chrome版本,Google已紧急发布修复补丁。用户应立即升级至最新版本(Windows/Mac 137.0.7151.68/.69及以上,Linux 137.0.7151.68及以上)。该漏洞利用门槛低且已有在野利用案例,CVSS评分高达8.8,潜在受害用户达千万级。安全专家建议用户及时更新并避

H4k

《计算与人工智能概论-问题求解、科学计算与AI应用方法》教学大纲+PPT课件+源代码+习题答案

《计算与人工智能概论-问题求解、科学计算与AI应用方法》教学大纲+PPT课件+源代码+习题答案

Bryan Ding

GoWind Admin开箱即用的企业级前后端一体管理脚手架(Go 后端 + 三选一前端

前端三选一,不是三合一:Vue3 Vben(Ant Design Vue)、Vue3 Element Plus、React19 Antd 是同一套后端的三个并列实现,为的是让用不同技术栈的团队都能拿到自己顺手的那一套——每个团队只取一套,一次部署只跑一套。三端各自独立包根、独立部署脚本、互不依赖,选定后另外两个目录可以直接删(改动点见 docs/adopt-one-frontend.md) 企业级 RBAC:支持多租户、多角色、多部门、菜单/按钮/数据级权限控制(策略引擎可切换:Casbin / OPA) 安全与等保合规:按等保 2.0 技术要求内置 180 天审计日志留存归档、口令策略三件套、TOTP MFA、口令应用层加密、动态 RBAC 与多租户隔离、定时备份轮换,详见安全与等保合规 微服务 + 单体自由切换:基于 go-kratos 微服务框架,但支持单体架构模式开发与部署,灵活适配团队规模 全栈代码生成:Protobuf → Go API / TypeScript 客户端,Ent Schema → ORM,一键 CRUD 脚手架;配套桌面端可视化代码生成器与 CLI(go-wind-toolkit,见配套工具) 生产就绪:JWT 鉴权、SSE 消息推送、异步任务调度、Swagger 文档、Docker 一键部署 AI 能力开箱即用:OpenAI 兼容多模型接入(云端/本地 Ollama)、SSE 流式对话、知识库 RAG(pgvector 向量检索 + 文件上传)、token 用量配额、脚本 ai 模块与定时 AI 任务

yiersansiwu123d

diffusion-models.7z.025

diffusion-models.7z.025

WSH_SRE
评论 6
收藏 已收藏
分享
返回顶部
kxy
非技术区 831 成员 53,568 内容