计算机机用户名在哪里,获取本机的IP 计算机名 登录操作系统用户名-萧云

这段VBScript代码展示了如何获取计算机名、用户名以及IP地址。通过调用API函数GetComputerName、GetUserName和gethostbyname,实现了系统信息的检索。在获取IP地址的过程中,涉及到Winsock库的初始化和清理,以及错误处理。
摘要由CSDN通过智能技术生成

整理收收藏的代码:

Option Compare Database

Private Const WS_VERSION_REQD = &H101

Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF&

Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&

Private Const MIN_SOCKETS_REQD = 1

Private Const SOCKET_ERROR = -1

Private Const WSADescription_Len = 256

Private Const WSASYS_Status_Len = 128

Private Type HOSTENT

hName As Long

hAliases As Long

hAddrType As Integer

hLength As Integer

hAddrList As Long

End Type

Private Type WSADATA

wversion As Integer

wHighVersion As Integer

szDescription(0 To WSADescription_Len) As Byte

szSystemStatus(0 To WSASYS_Status_Len) As Byte

iMaxSockets As Integer

iMaxUdpDg As Integer

lpszVendorInfo As Long

End Type

Declare Function wu_GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Declare Function wu_GetComputerName Lib "kernel32.dll" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long

Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired&, lpWSAData As WSADATA) As Long

Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long

Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal hostname$) As Long

Private Declare Sub RtlMoveMemory Lib "kernel32" (hpvDest As Any, ByVal hpvSource&, ByVal cbCopy&)

Function ap_GetComputerName() As Variant

Dim strComputerName As String

Dim lngLength As Long

Dim lngResult As Long

strComputerName = String(255, 0)

lngLength = 255

lngResult = wu_GetComputerName(strComputerName, lngLength)

ap_GetComputerName = Left(strComputerName, InStr(1, strComputerName, Chr(0)) - 1)

End Function

Function ap_GetUserName() As Variant

Dim strUserName As String

Dim lngLength As Long

Dim lngResult As Long

strUserName = String(255, 0)

lngLength = 255

lngResult = wu_GetUserName(strUserName, lngLength)

ap_GetUserName = Left(strUserName, InStr(1, strUserName, Chr(0)) - 1)

End Function

Function GetComputerIP() As String

Dim hostent_addr As Long

Dim host As HOSTENT

Dim hostip_addr As Long         '

Dim temp_ip_address() As Byte

Dim I As Integer

Dim vntTemp As Variant

SocketsInitialize

hostent_addr = gethostbyname(vntTemp)

If hostent_addr = 0 Then

MsgBox "Can't resolve name."

Exit Function

End If

RtlMoveMemory host, hostent_addr, LenB(host)

RtlMoveMemory hostip_addr, host.hAddrList, 4

ReDim temp_ip_address(1 To host.hLength)

RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength

For I = 1 To host.hLength

GetComputerIP = GetComputerIP & temp_ip_address(I) & "."

Next

GetComputerIP = Mid$(GetComputerIP, 1, Len(GetComputerIP) - 1)

SocketsCleanup

End Function

Function hibyte(ByVal wParam As Integer)

hibyte = wParam \ &H100 And &HFF&

End Function

Function lobyte(ByVal wParam As Integer)

lobyte = wParam And &HFF&

End Function

Sub SocketsInitialize()

Dim WSAD As WSADATA

Dim iReturn As Integer

Dim sLowByte As String, sHighByte As String, sMsg As String

iReturn = WSAStartup(WS_VERSION_REQD, WSAD)

If iReturn <> 0 Then

MsgBox "Winsock.dll is not responding."

End

End If

If lobyte(WSAD.wversion) < WS_VERSION_MAJOR or (lobyte(WSAD.wversion) = WS_VERSION_MAJOR And hibyte(WSAD.wversion) < WS_VERSION_MINOR) Then

sHighByte = Trim$(Str$(hibyte(WSAD.wversion)))

sLowByte = Trim$(Str$(lobyte(WSAD.wversion)))

sMsg = "Windows Sockets version " & sLowByte & "." & sHighByte

sMsg = sMsg & " is not supported by winsock.dll "

MsgBox sMsg

End

End If

If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then

sMsg = "This application requires a minimum of "

sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported sockets."

MsgBox sMsg

End

End If

End Sub

Sub SocketsCleanup()

Dim lReturn As Long

lReturn = WSACleanup()

If lReturn <> 0 Then

MsgBox "Socket error " & Trim$(Str$(lReturn)) & " occurred in Cleanup "

End

End If

End Sub

'调用方法--'

'Private Sub Command0_Click()

'MsgBox ap_GetComputerName

'MsgBox ap_GetUserName

'MsgBox GetComputerIP

'End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值