我正在开发一个ISAPI扩展。如何使ISAPI扩展回收它正在运行的应用程序池?
要实现此目的,我可以禁用快速失败保护并调用TerminateProcess(GetCurrentProcess(), 0);
之类的内容
但这会导致潜在的数据丢失。
我也可以通过执行外部程序%windir%\system32\inetsrv\appcmd.exe recycle apppool /apppool.name:"name of my app pool"
来实现。但是这样我必须在某处配置应用程序池名称,并且池标识必须具有管理员权限。
此外,这可以通过WMI完成,但也需要管理员权限。
我不想给我的应用程序池管理员权限。
那么有没有办法只授予用户权限重启应用程序池但不是完全管理员权限?可能是本地安全策略中的一些设置?
或唯一的解决方案是创建一个以管理员身份运行的守护进程(服务)并等待来自我的ISAPI扩展的消息重新启动它?