You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确重命名域内计算机?C#调用NetRenameMachineInDomain报错1210

错误原因

错误码1210(ERROR_INVALID_COMPUTERNAME)触发的核心原因有三个:

  1. 你提前调用SetComputerNameW修改了本地计算机名,但该修改需要重启系统才会全量生效,未重启时域交互组件识别到的本地名仍是旧值,和你传入的新名称校验不匹配。
  2. NetRenameMachineInDomain 接口的最后一个参数不支持NETSETUP_ACCT_CREATE标志,该标志是NetJoinDomain专属参数,传入不支持的标志会触发参数校验失败,误报计算机名无效。
  3. 新计算机名不符合AD域规则:长度超过15字符、包含AD禁用的特殊字符、或是域内已存在同名计算机对象也会返回该错误。

修复方案

  • 调整执行逻辑:删除提前调用SetComputerNameW的代码,NetRenameMachineInDomain会自动同步修改本地计算机名和域内计算机对象,修改完成后统一重启一次即可生效,无需分两次操作。
  • 修正接口参数:移除NetRenameMachineInDomain最后一个参数的NETSETUP_ACCT_CREATE标志,普通重命名场景该参数传0即可,如果需要强制覆盖旧的域账户信息,可以传入值为0x00000400的NETSETUP_DOMAIN_RENAME_IF_JOINED标志。
  • 增加前置校验:调用接口前先校验新计算机名长度不超过15字符,不含!@#$%^&*()[]{}|;:,.?等特殊字符,提前规避格式问题。

修正后的代码示例

...
if (!(String.IsNullOrWhiteSpace(adlogin) || String.IsNullOrWhiteSpace(adpass))) {
    if (NetInDomain) {
        // 移除NETSETUP_ACCT_CREATE标志,不需要提前调用SetComputerNameW
        return NetRenameMachineInDomain(null, newName, adlogin, adpass, 0);
    }
    else {
        return NetJoinDomain(null, "myorg.local", null, "myorg\\" + adlogin, adpass,
                NetJoinDomainOptions.NETSETUP_JOIN_DOMAIN | NetJoinDomainOptions.NETSETUP_ACCT_CREATE |
                NetJoinDomainOptions.NETSETUP_DOMAIN_JOIN_IF_JOINED | NetJoinDomainOptions.NETSETUP_JOIN_WITH_NEW_NAME);
    }
}
// 未传域账号的场景再单独调用SetComputerNameW修改本地名
if (!SetComputerNameW(newName)) return GetLastError();
...

内容的提问来源于stack exchange,提问作者Seriy_A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:27:03