Я пытаюсь изменить имя компьютера, использующего домен, используя SetComputerNameEx()
, Функция возвращает успех, но когда я перезагружаю компьютер, он все еще имеет старое имя компьютера. SetComputerNameEx()
отлично работает на компьютерах без домена Я сталкиваюсь с этой проблемой только на компьютерах домена. Я что-то пропустил?
РЕДАКТИРОВАТЬ: я использую следующий код.
BOOL ChangeCompName(CString csCompName)
{
if( !SetComputerNameEx(ComputerNamePhysicalDnsHostname,csCompName.GetBuffer()))
{
_tprintf(L"Failed to set Physical DNS name %d\n",GetLastError());
return FALSE;
}
else
{
_tprintf(L"Computer name change Success\n");
}
if( !SetComputerNameEx(ComputerNamePhysicalNetBIOS,csCompName.GetBuffer()))
{
_tprintf(L"Failed to set Physical NetBios name %d\n",GetLastError());
return FALSE;
}
else
{
_tprintf(L"Computer name change Success\n");
}
return TRUE;
}
int main()
{
if(!ChangeCompName(L"NewCompName"))
{
_tprintf(L"Failed to change Name.\n");
return 1;
}
else
{
_tprintf(L"Computer name change.\n");
}
return 0;
}
Я попытался запустить код с правами администратора и системы. каждый раз, когда я запускаю код, он возвращает успех, но не меняет имя компьютера. Странно то, что этот код отлично работает на компьютере рабочей группы и не работает на доменных компьютерах.
Я понял, как сделать переименование компьютера на доменном компьютере. Вот решение, если это кому-нибудь нужно.
Вместо звонка SetComputerNameEx () Просто используйте NetGetJoinInformation () с учетными данными администратора домена. Это позволит переименовать компьютер как в домене, так и локально.
Других решений пока нет …