SetComputerNameEX返回成功但计算机名称在重新启动时未更改

时间:2018-01-29 17:04:58

标签: c++ windows msdn computer-name

我正在尝试使用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;
}

我尝试使用管理员和系统权限运行代码。每次我运行代码它返回成功但不更改计算机名称。奇怪的是,这段代码适用于工作组计算机,不适用于域计算机。

1 个答案:

答案 0 :(得分:0)

我想出了如何对域机器进行计算机重命名。如果有人需要,这是解决方案。

而不是调用SetComputerNameEx()只需将NetGetJoinInformation()与域管理员凭据一起使用即可。这将在域中和本地重命名计算机。