Как получить отличительное имя компьютера (DN) с помощью С++

Кажется, я не могу найти способ получить DN рабочей станции (компьютера) с C++ и WinAPI. Любые идеи, как это сделать?

PS. Рабочая станция подключена к контроллеру домена.

PS2. Мне нужно DN компьютера, а не вошедшего в систему пользователя.


person c00000fd    schedule 10.11.2012    source источник
comment
Для уточнения, вам нужно имя компьютера, на котором работает ваш код? Или имя любого произвольного компьютера, альтернативный идентификатор которого вы укажете (например, имя NetBIOS, имя DNS и т. д.)? Это имеет значение.   -  person WhozCraig    schedule 11.11.2012
comment
Мне это нужно для компьютера, на котором работает мой код. Спасибо!   -  person c00000fd    schedule 11.11.2012


Ответы (2)


Если вам нужно имя компьютера, на котором выполняется ваш код, и он участвует в домене, вы можете использовать GetComputerObjectName:

#include <security.h>
#include <secext.h>

TCHAR szDN[1024];
ULONG ulSize = sizeof(szDN)/sizeof(szDN[0]);
BOOL res = GetComputerObjectName(NameFullyQualifiedDN, szDN, &ulSize);
person WhozCraig    schedule 10.11.2012
comment
Спасибо. Это именно то, что мне нужно. Кстати, для тех, кто хочет получить DN пользователя, замените его на GetUserNameEx(). - person c00000fd; 11.11.2012
comment
@user843732 user843732 Рад, что это помогло. Это действительно скучная функция, когда вы НЕ находитесь в домене (каждая опция возвращает FALSE), но я вижу, что она очень полезна, когда вы находитесь в домене. - person WhozCraig; 11.11.2012

Вероятно, вы хотите, чтобы функция GetComputerNameEx была задокументирована на http://msdn.microsoft.com/en-us/library/windows/desktop/ms724301%28v=vs.85%29.aspx

person milgner    schedule 10.11.2012
comment
Спасибо, но это не совсем то, что мне было нужно. GetComputerObjectName выполняет эту работу. - person c00000fd; 11.11.2012