none
사용자 계정 얻어오기 관련 이슈입니다. RRS feed

  • 질문

  • 사용자 계정의 이름을 변경한 뒤 API를 통해 사용자 정보를 얻어오면 변경 전 사용자 계정 정보가 얻어와 집니다. 

    예를들어 'A'라는 계정을 'B'로 변경 후 API를 통해 사용자 계정 정보를 얻어오면 변경된 'B'가 아닌 'A'가 얻어와 집니다. 

    사용한 API 목록은 아래와 같습니다. 

    - GetUserName()

    - GetUserNameEx()

    - WTSQuerySessionInformation() (인자 : WTSUserName)

    그리고 이때 얻어온 'B'를 이용해서는 LogonUserW()에 실패하며, 기존 'A'를 입력해 주어야 성공합니다. 

    이와 관련하여 해결 방법이나 참고할 문서, 또는 비슷한 이슈를 경험해 보신 분들은 답변 부탁 드립니다.

    2017년 5월 16일 화요일 오전 4:58

모든 응답

  • 기존 이름을 입력해야 로그인을 성공한다는 현상으로 봐서는 logon name을 바꾼 것이 아니라 display name을 바꾼 것이 아닌가 생각됩니다.

    그 경우가 맞다면 GetUserNameEx function를 이용하시고 첫번째 파라미터인 NameFormat에 NameDisplay를 지정해서 값을 얻어보도록 합니다.

    BOOLEAN WINAPI GetUserNameEx(
      _In_    EXTENDED_NAME_FORMAT NameFormat,
      _Out_   LPTSTR               lpNameBuffer,
      _Inout_ PULONG               lpnSize
    );

    EXTENDED_NAME_FORMAT 열거자에는 다음과 같은 상수들이 정의되어 있습니다.

    typedef enum  { 
      NameUnknown           = 0,
      NameFullyQualifiedDN  = 1,
      NameSamCompatible     = 2,
      NameDisplay           = 3,
      NameUniqueId          = 6,
      NameCanonical         = 7,
      NameUserPrincipal     = 8,
      NameCanonicalEx       = 9,
      NameServicePrincipal  = 10,
      NameDnsDomain         = 12
    } EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;

    2017년 6월 12일 월요일 오후 1:00