首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定IIS 5的IIS用户

确定IIS 5的IIS用户
EN

Stack Overflow用户
提问于 2010-01-22 19:27:43
回答 1查看 642关注 0票数 0

我正在为一个web应用程序编写一个基于Wix的安装程序,并希望在它安装的文件夹上设置权限,以便IIS可以访问它们。

IIS6和IIS7分别使用IIS_WPGIIS_USRS,IIS5使用IUSR_COMPUTER NAME。但是,如果用户更改了其计算机名,则使用当前计算机名设置权限将失败。

有没有办法以编程方式确定IIS5正在使用的用户帐户,而不是仅仅假设它是IUSR_COMPUTERNAME帐户

EN

回答 1

Stack Overflow用户

发布于 2010-02-17 02:08:49

我是这样做的(不要假装提供最佳实践解决方案)-这是一个直接的CA,它设置了您以后可以使用的属性:

代码语言:javascript
运行
复制
  [CustomAction]
  public static ActionResult SetIUSRAccountNameAction(Session session)
  {
     ActionResult actionResult = ActionResult.Failure;
     DirectoryEntry iisAdmin = new DirectoryEntry("IIS://localhost/W3SVC");
     if (iisAdmin != null)
     {
        string iusrName = (string)iisAdmin.Properties["AnonymousUserName"][0];
        if (!string.IsNullOrEmpty(iusrName))
        {
           session["IUSR_USERNAME"] = iusrName;

           string iusrDomain = GetAccountDomain(iusrName, session);
           if (!string.IsNullOrEmpty(iusrDomain))
           {
              session["IUSR_DOMAIN"] = iusrDomain;
           }

           actionResult = ActionResult.Success;
        }
     }

     return actionResult;
  }

其中,GetAccountDomain方法的定义如下:

代码语言:javascript
运行
复制
  static string GetAccountDomain(string accountName, Session session)
  {
     SelectQuery query = new SelectQuery("Win32_UserAccount", string.Format("Name='{0}'", accountName), new string[] { "Domain" });
     ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
     try
     {
        foreach (ManagementObject account in searcher.Get())
        {
           return (string)account["Domain"];
        }
     }
     catch (Exception ex)
     {
        session.Log("Failed to get a domain for the user {0}:  {1}", accountName, ex.Message);
     }

     return null;
  }

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2116864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档