C# 如何在.NET中更改计算机的主DNS后缀?

C# 如何在.NET中更改计算机的主DNS后缀?,c#,.net,vb.net,wmi,C#,.net,Vb.net,Wmi,我正在为新电脑开发一个自动配置应用程序。我设法通过编程设置了所有需要的参数,除了计算机的主DNS后缀。请记住,这与网络连接默认DNS后缀不同 有什么帮助吗 更新:这里是用于设置PC的IP、子网、网关和DNS的请求类。 它只在有1个网络接口的系统中进行了测试,我不知道当有更多NIC时它会如何工作。哦,这是WIP,所以现在除了抛出异常之外,没有实现错误处理 从msdn上的搜索结果来看,您可能需要使用 是啊,成功了。当然,我和往常一样愚蠢,因为我已经在设置主机名了。 下面是vb.net中主机/后缀更

我正在为新电脑开发一个自动配置应用程序。我设法通过编程设置了所有需要的参数,除了计算机的主DNS后缀。请记住,这与网络连接默认DNS后缀不同

有什么帮助吗

更新:这里是用于设置PC的IP、子网、网关和DNS的请求类。


它只在有1个网络接口的系统中进行了测试,我不知道当有更多NIC时它会如何工作。哦,这是WIP,所以现在除了抛出异常之外,没有实现错误处理

从msdn上的搜索结果来看,您可能需要使用


是啊,成功了。当然,我和往常一样愚蠢,因为我已经在设置主机名了。 下面是vb.net中主机/后缀更改的完整代码:

Private Enum COMPUTER_NAME_FORMAT As Integer
    ComputerNameNetBIOS = 0
    ComputerNameDnsHostname = 1
    ComputerNameDnsDomain = 2
    ComputerNameDnsFullyQualified = 3
    ComputerNamePhysicalNetBIOS = 4
    ComputerNamePhysicalDnsHostname = 5
    ComputerNamePhysicalDnsDomain = 6
    ComputerNamePhysicalDnsFullyQualified = 7
End Enum

Public Const MAX_COMPUTERNAME_LENGTH As Int32 = 31

<DllImport("kernel32.dll", CharSet:=CharSet.Ansi, SetLastError:=True)> _
Private Shared Function SetComputerNameEx( _
    ByVal NameType As COMPUTER_NAME_FORMAT, _
    <MarshalAs(UnmanagedType.LPStr)> ByVal lpBuffer As String) As Integer
End Function

Public Function SetNewName(ByVal Computername As String, ByVal DNSSuffix As String) As Boolean
    If NetworkSet.SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsHostname, _
        Computername & Convert.ToChar(0)) = 0 Then
        Throw New Win32Exception
    End If
    If NetworkSet.SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsDomain, _
        DNSSuffix & Convert.ToChar(0)) = 0 Then
        Throw New Win32Exception
    End If

End Function

请添加文档链接,说明您是否已完成所有其他配置?对其他人来说真的很有用。