SetComputerNameEX возвращает успех, но имя компьютера не изменяется при перезагрузке

Я пытаюсь изменить имя компьютера, использующего домен, используя 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;
}

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

0

Решение

Я понял, как сделать переименование компьютера на доменном компьютере. Вот решение, если это кому-нибудь нужно.

Вместо звонка SetComputerNameEx () Просто используйте NetGetJoinInformation () с учетными данными администратора домена. Это позволит переименовать компьютер как в домене, так и локально.

0

Другие решения

Других решений пока нет …