1、如何添加一个帐户到“IIS管理员”组?
    我的目的是想添加network service这个东西到IIS6.0的管理员组中。
2、关于IIS配置的COM组件是哪一个?
    我想改变它的权限,以便能够通过asp.net的webform中编辑站点属性。
问题背景:
   我正在做一个通过asp.net编辑IIS的网站。平台使用win2k3+IIS6.0+.NET 2.0,使用系统的管理员帐户本地编译执行,一切正常。
   使用系统的普通帐户编译执行,出现异常:System.Runtime.InteropServices.COMException (0x80070005): 拒绝访问。
工程结构说明:
  一个专门添加站点的类: addsite.cs[没有问题],使用的是WMI,权限使用的方法是MSDN上介绍的部分代码模拟。
  一个专门获取站点信息和修改站点的类:getiisinfo.cs[有问题],使用的是ADSI,权限方面使用以下方法都不能解决问题:
  1、在webconfig中添加<identity impersonate="true" userName="wmi" password="wmi"/>
  2、使用MSDN上的部分代码模拟代码调用说明:
useraddsite.aspx
  void button_click(Object sender,EventArgs e){
     new addsite(一些参数);
  }addsite.cs
  createsite(一些参数);//正常执行,这个也是需要权限的,使用wmi实现
  getiisinfo gi=new getiisinfo();
  gi.setiisinfo(一些参数);
  //执行失败,触发异常,使用ADSI实现的,DirectoryEntry
  补充说明:
 管理员运行是完全可以的,说明全部都是权限的原因。为了安全,我不想把aspnet和everyone设置到管理员组。部分调试结果:
System.Web.HttpContext.Current.Response.Write("用户名" + System.Web.HttpContext.Current.User.Identity.Name);
        if (impersonateValidUser("wmi", "127.0.0.1", "wmi"))
        {
            System.Web.HttpContext.Current.Response.Write("<br>用户名" + System.Web.HttpContext.Current.User.Identity.Name+"<br>");
         }
        undopersonate();impersonateValidUser()就是开始模拟的函数,成功模拟返回真。wmi是管理员。undopersonate()是取消模拟。
这个调试输出的结果都是
用户名webster
用户名webster
第一个输出能够理解,但是第二个是我执行模拟后输出的,应该输出
用户名wmi
才对。
[顶者有分]