2013-07-16 6 views
1

`와 컴퓨터 교장의 이름을 가져옵니다 다음 코드와 Network Service로 실행되는 서비스의 컴퓨터 사용자 이름을 얻기 위해 노력했다. 내 컴퓨터의 도메인 이름이 [email protected] 때문에GetUserNameEx`

BOOLEAN bError = GetUserNameEx(NameUserPrincipal, buffer, &buf_len); 

, 나는 buffer의 결과는 동일합니다 기대합니다. 그러나 반환 된 서비스 사용자 이름은 [email protected]입니다. 컴퓨터를 변경하고 도메인에 추가하십시오. example.com.

나는 비정상적인 사용자 이름에 대해 아무 생각도 없어. 무엇이 문제일까요? 힌트를 주시면 감사하겠습니다.

내가 도메인 컨트롤러에서 서비스를 실행하고 있습니다


UPDATE,이 결과를 방해 여부를 알 수 없습니다.

당신과 안부 감사합니다!

답변

1

내가 네트워크 서비스 사용자 계정의 사용자 이름을 찾을 때 컴퓨터 이름을 얻을 기대하지 않을 것이다.

#include <windows.h> 
#include <iostream> 

int main(){ 
    SID nss; 
    DWORD size = sizeof(nss); 

    CreateWellKnownSid(WinNetworkServiceSid, NULL, &nss, &size); 

    char name[256]; 
    DWORD n_size = sizeof(name); 
    char domain[256]; 
    DWORD d_size = sizeof(domain); 
    SID_NAME_USE type; 

    LookupAccountSid(NULL, &nss, name, &n_size, domain, &d_size, &type); 

    std::cout << domain << "\\" << name << "\n"; 
    return 0; 
} 

을 [그리고 내가 무엇을 얻을] : 당신이 LookupAccountSid로과를 보면, 나는 NT AUTHORITy\NETWORK SERVICE을 기대할 것입니다.

나는 당신이 그것을 자동으로 생성 된 사용자 계정의 일부 남은보고있는 사용자 이름을 추측에는 요. 이름을 다른 것으로 변경 한 후에 오리지날 이름의 일부 잔해가 남아 있습니다. 나는 또한 언제 어디서나 볼 수 있었지만 (또는 결코 나타나지 않았다고 예측할 수있는 충분한 패턴을 보지 못했다.

+0

는 힌트를 주셔서 감사합니다! –