こじんてきメモ

趣味とか...(╹◡╹)

VB.Netで端末名を変更する【殴り書き】

環境:Visual Basic 2012

・端末名は2つある

今回知ったのですが、いわゆる「端末名」には2つある。
・Net BIOS
TCP/IPのコンピュータ名

COMPUTERNAMEとHOSTNAMEの違い

VB.NETでの端末名の変更

VB.Netで端末名を変更することができなさそうなので、WindowsAPIを使用する方法をとった。その際、「SetComputerName」を見つけたが、これは実は「NET BIOS」名しか変更してくれない。TCP/IPのホスト名を変更するためには「SetComputerNameEx」を使用する必要があった。
※このために、なぜホスト名が変わらないのか少し悩んだ。

・記述方法

'宣言
Declare Auto Function SetComputerNameEx Lib "kernel32.dll" (Byval NameType As Integer, Byval lpBuffer As String) As Integer
'関数を作る
Public Function SetCompName(s as String) As String
   Dim NameType As Long
   NameType = 5 '「NET BIOS」と「ホスト名」を変更する場合「ComputerNamePhysicalDnsHostname」としたいので「5」にする。
   Call SetComputerNameEx(NameType,s)
End Function

※列挙型「COMPUTER_NAME_FORMAT」
ComputerNameNetBIOS→0
ComputerNameDnsHostname→1
ComputerNameDnsDomain→2
ComputerNameDnsFullyQualified→3
ComputerNamePhysicalNetBIOS→4
ComputerNamePhysicalDnsHostname→5
ComputerNamePhysicalDnsDomain→6
ComputerNamePhysicalDnsFullyQualified→7