IIS加载我的Isapi DLL后,该DLL中的代码是作为系统权限运行还是作为存放这个dll的目录所允许的用户权限运行?我还是举个例子说明我的问题吧。
比如:我写了一个Isapi扩展DLL名为MyDll.dll放到服务器上的c:\www\User1目录下(该目录只允许User1用户完全访问,其他用户一律不允许访问。User1用户也不是Administrators组的成员)c:\www\User1目录即为iis里面设置的主目录。当用户访问http://MyWebSite/MyDll.dll 时MyDll.dll被iis进程加载从而MyDll.dll中的代码将会被执行。我的问题是:MyDll.dll中的代码可以调用权限管理的api更改其他目录的权限吗?MyDll.dll中的代码可以读写不允许User1用户访问的文件吗?MyDll.dll是作为系统权限运行的还是作为User1用户权限运行?请熟悉winnt安全权限管理的编程高人赐教,谢谢先!!!

解决方案 »

  1.   

    在win2000里面以及使用IIS5兼容隔离模式的windows2003,这个用户是启动IIS服务的用户,这个用户,可以通过右键我的电脑,管理,服务,到里面修改。如果是没有使用IIS5兼容隔离模式的windows2003,这个用户是应用程序池中指定的用户。
      

  2.   

    我不得不说的是,调试ISAPI是非常艰苦的一件事情,动不动就要重启IIS,所以我很佩服你的毅力。可以说写一行ISAPI代码所花的时间绝对超过写10行ASP.NET所花的时间
      

  3.   

    傻了吧,有简单的调试ISAPI的方法,ISAPI的DLL应该是以IIS的权限来运行的吧,,,因为它是做为一个DLL被IIS加载的。。
      

  4.   

    在IIS自己的帐户下运行
    http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/3648346f-e4f5-474b-86c7-5a86e85fa1ff.mspx
      

  5.   

    感谢前辈们的指点,我确实写了一个isapi dll进行试验,用getusername输出的确实是IUSER_xxxCOMPUTERNAMExxx这个iis内置的匿名访问帐户。我想进一步知道在这种情况下如果isapi dll中的代码创建进程该进程的权限是什么,于是我又写了一个窗口程序名为test.exe进行测试。我让test.exe调用setwindowtext把该窗口的标题设置为test.exe调用getusername得到用户名。但我发现isapi dll虽然能成功创建test.exe(通过任务管理器)但test.exe确不显示任何窗口——这是什么呢?而且我用任务管理器也无法结束这个进程(terminateprocess)——这是为什么呢?isapi dll创建的这个进程使用的是什么用户权限呢?请前辈们赐教,谢谢先!