2010-01-22 2 views
0

웹 응용 프로그램에 대한 Wix 기반 설치 프로그램을 만들고 IIS가 액세스 할 수 있도록 설치하는 폴더에 대한 사용 권한을 설정하려고합니다.IIS 5에 대한 IIS 사용자 결정

IIS 6 및 7은 각각 IIS_WPGIIS_USRS을 사용하고 IIS 5는 IUSR_COMPUTER NAME을 사용합니다. 그러나 사용자가 컴퓨터 이름을 변경 한 경우 현재 컴퓨터 이름을 사용하여 사용 권한을 설정하지 못합니다.

IUSR_COMPUTERNAME이라고 가정하지 않고 IIS 5에서 사용중인 사용자 계정을 프로그래밍 방식으로 확인하는 방법이 있습니까? GetAccountDomain 방법이 정의

[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; 
    } 

를 : -이처럼하고 있어요

+0

나는 항상이 응용 프로그램을 기본 웹 사이트 (IIS 사이트 # 1)에 설치한다고 가정합니다. – Kev

답변

0

이 (모범 사례 솔루션을 제공 척하지 않음) 그 속성을 나중에 사용할 수를 설정하는 즉시 CA입니다 좋아요 :

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

도움을 주셔서 대단히 감사합니다. 정말 유용합니다. 일시적으로 몇 주 동안 다른 프로젝트로 이동 했으므로 확인할 수 없지만 최대한 빨리 할 것입니다. 다시 감사합니다. Paul – Votive