SetComputerNameEX returns 成功但计算机名称在重新启动时未更改
SetComputerNameEX returns success but computer name not changed upon restart
我正在尝试使用 SetComputerNameEx()
更改域计算机的计算机名称。函数 returns 成功,但当我重新启动计算机时,它仍然具有旧的计算机名称。 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;
}
我尝试 运行同时使用管理员和系统权限来编译代码。每次我 运行 代码它 returns 成功但不更改计算机名称。奇怪的是这段代码对工作组计算机非常有效,对域计算机不起作用。
我想出了如何对域计算机进行计算机重命名。如果有人需要,这是解决方案。
而不是使用域管理员凭据调用 SetComputerNameEx() Just use NetGetJoinInformation()。这将在域和本地重命名计算机。
我正在尝试使用 SetComputerNameEx()
更改域计算机的计算机名称。函数 returns 成功,但当我重新启动计算机时,它仍然具有旧的计算机名称。 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;
}
我尝试 运行同时使用管理员和系统权限来编译代码。每次我 运行 代码它 returns 成功但不更改计算机名称。奇怪的是这段代码对工作组计算机非常有效,对域计算机不起作用。
我想出了如何对域计算机进行计算机重命名。如果有人需要,这是解决方案。
而不是使用域管理员凭据调用 SetComputerNameEx() Just use NetGetJoinInformation()。这将在域和本地重命名计算机。