最近调试一个ISAPI扩展,需要知道进程和线程的身份。学到的知识。
MSDN 原文:IIS Application Identities。
ISAPI 扩展 (包括 ASP, ASP.NET,因为 asp.dll 和 aspnet_isapi.dll 都是ISAPI扩展):
进程(Process,w3wp.exe)的身份:
1. 在匿名访问方式,使用 IUSR_computer_name 账号。
2. 非匿名方式,使用认证的客户的身份。
线程(Thread)的身份:
1. Win32 RevertToSelf 未被调用,和Process身份一样。
2. Win32 RevertToSelf 被调用, 在IIS6 worker process isolation mode模式下, 线程伪装成“NT AUTHORITY\NETWORK SERVICE “帐号。(thread impersonates the NT AUTHORITY\NETWORK SERVICE account).
实际上,这个账号在“Application Pools“中可以设定。
如果在线程中新建一个线程(_beginthread()),则新线程在“NT AUTHORITY\NETWORK SERVICE “帐号下运行。
在IIS6中,每个website和虚拟目录可以单独设置 Application settings 到单独的Application Pool。每个 Application Pool 在单独 w3wp.exe 进程中。