2010-10-28 35 views
0

我正在为新PC的自动配置应用程序。我设法以编程方式设置除计算机的主DNS后缀之外的所有必需参数(请记住,这与网络连接默认DNS后缀不同)。如何在.NET中更改计算机的主DNS后缀?

任何帮助?

更新:这是要求的类别,用于设置PC的IP,子网,网关和DNS。 http://pastebin.com/fHACwwDV

它仅在具有1个网络接口的系统中测试过,我不知道当有更多的NIC时它将如何表现。哦,这是在制品,所以现在除了抛出异常之外没有执行任何错误处理。

+0

能否请您补充一点,节目有已完成所有其他配置文件链接?为他人提供真正有用的信息。 – jgauffin 2010-10-28 12:42:16

回答

0

耶,它的工作。当然,我一如既往愚蠢,因为我已经设置了主机名。 下面是在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