2013-07-16 3 views
1

Я попытался получить имя главного пользователя службы, работающей как Network Service, со следующим кодом.Получить имя участника компьютера с помощью `GetUserNameEx`

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

Поскольку доменное имя моего компьютера [email protected], я ожидаю, что результат в buffer то же самое. Тем не менее, возвращаемое имя основного участника службы - [email protected]. Я уверен, что я поменял свой компьютер и добавил его в домен example.com.

Я понятия не имею об аномальном принципиальном имени. В чем может быть проблема? Любые подсказки будут высоко оценены.

UPDATE


Я бегу службы на контроллере домена, не знаю, будет ли это мешать результат.

Спасибо и с наилучшими пожеланиями!

ответ

1

Я бы не ожидал получить имя компьютера при поиске имени пользователя для учетной записи пользователя сетевой службы. Если вы посмотрите его с LookupAccountSid, я ожидал увидеть NT AUTHORITy\NETWORK SERVICE:

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

[И вот что я получаю].

Я бы предположил, что имя пользователя вы видите в нем некоторое количество автоматически созданной учетной записи пользователя. По-видимому, некоторые остатки этого оригинального названия долго после того, как вы изменили имена на другие вещи. Я также видел их снова и снова, хотя никогда не видел достаточно надежного шаблона, чтобы предсказать, когда они появятся или не появятся (и никогда не находили возможности убедиться, что они полностью исчезли).

+0

Благодарим за подсказки! –

Смежные вопросы