Visual Basic - obtener la MAC ADDRESS de la maquina

Life is soft - evento anual de software empresarial
   
Vista:

obtener la MAC ADDRESS de la maquina

Publicado por oscar (6 intervenciones) el 21/08/2009 22:42:45
Buenas tardes
Alguien conoce algun script vbs que me permita saber la MAC ADDRESS de mi pc?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:obtener la MAC ADDRESS de la maquina

Publicado por juan carlos (518 intervenciones) el 22/08/2009 22:56:22
hola oscar aqui te van tres soluciones a lo que preguntaste:
==============================================
sacar la mac con archivo bat
==============================================
abre el notepad
escribe ipconfig /all >salida.txt
guardalo como "mac.bat" o el nombre que desees
guardalo con las comillas
ejecutalo y en el folder del bat aparecera el archivo salida.txt
abrelo y busca direccion fisica o physic address
==============================================
sacar mac con visual basic
==============================================
inserta un boton(command1)
inserta el codigo de abajo
en el folder del programa aparecera el archivo salida.txt
abrelo y busca direccion fisica o physic address

Private Sub Command1_Click()
Set ejecutar = CreateObject("wscript.shell")
Open "mac.bat" For Output As #1
Print #1, "ipconfig /all >salida.txt"
Close #1
ejecutar.run "mac.bat"
End Sub
==============================================
la respuesta a tu pregunta sacar mac con vbs
==============================================
abre el notepad
escribe el codigo de abajo
guardalo como "mac.vbs" o el nombre que desees
guardalo con las comillas
ejecutalo y en el folder del bat aparecera el archivo salida.txt
abrelo y busca direccion fisica o physic address

Dim fso, tf
Set ejecutar = CreateObject("wscript.shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile("mac.bat", True)
tf.Write ("ipconfig /all >salida.txt")
tf.Close
ejecutar.run "mac.bat"
==============================================
espero te sirva de algo esto
mi mail es mega.juca@hotmail.es
==============================================
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:obtener la MAC ADDRESS de la maquina

Publicado por oscar (6 intervenciones) el 24/08/2009 15:31:27
gracias Juan Carlos, pero revisando el script vbs trae toda la informacion del ipconfig, necesito unicamente el valor de la MAC
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:obtener la MAC ADDRESS de la maquina

Publicado por juan carlos (518 intervenciones) el 25/08/2009 06:11:47
Hola oscar
abre un form1
inserta en el form1 un textbox y un command1
inserta el codigo de abajo
corre el programa
==============================================
Private Const NCBASTAT As Long = &H33
Private Const NCBNAMSZ As Long = 16
Private Const HEAP_ZERO_MEMORY As Long = &H8
Private Const HEAP_GENERATE_EXCEPTIONS As Long = &H4
Private Const NCBRESET As Long = &H32

Private Type NET_CONTROL_BLOCK 'NCB
ncb_command As Byte
ncb_retcode As Byte
ncb_lsn As Byte
ncb_num As Byte
ncb_buffer As Long
ncb_length As Integer
ncb_callname As String * NCBNAMSZ
ncb_name As String * NCBNAMSZ
ncb_rto As Byte
ncb_sto As Byte
ncb_post As Long
ncb_lana_num As Byte
ncb_cmd_cplt As Byte
ncb_reserve(9) As Byte 'Reserved, must be 0
ncb_event As Long
End Type

Private Type ADAPTER_STATUS
adapter_address(5) As Byte
rev_major As Byte
reserved0 As Byte
adapter_type As Byte
rev_minor As Byte
duration As Integer
frmr_recv As Integer
frmr_xmit As Integer
iframe_recv_err As Integer
xmit_aborts As Integer
xmit_success As Long
recv_success As Long
iframe_xmit_err As Integer
recv_buff_unavail As Integer
t1_timeouts As Integer
ti_timeouts As Integer
Reserved1 As Long
free_ncbs As Integer
max_cfg_ncbs As Integer
max_ncbs As Integer
xmit_buf_unavail As Integer
max_dgram_size As Integer
pending_sess As Integer
max_cfg_sess As Integer
max_sess As Integer
max_sess_pkt_size As Integer
name_count As Integer
End Type

Private Type NAME_BUFFER
name As String * NCBNAMSZ
name_num As Integer
name_flags As Integer
End Type

Private Type ASTAT
adapt As ADAPTER_STATUS
NameBuff(30) As NAME_BUFFER
End Type

Private Declare Function Netbios Lib "netapi32" _
(pncb As NET_CONTROL_BLOCK) As Byte

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(hpvDest As Any, ByVal _
hpvSource As Long, ByVal _
cbCopy As Long)

Private Declare Function GetProcessHeap Lib "kernel32" () As Long

Private Declare Function HeapAlloc Lib "kernel32" _
(ByVal hHeap As Long, _
ByVal dwFlags As Long, _
ByVal dwBytes As Long) As Long

Private Declare Function HeapFree Lib "kernel32" _
(ByVal hHeap As Long, _
ByVal dwFlags As Long, _
lpMem As Any) As Long


Private Sub Command1_Click()

'in calling, pass the character you
'want as a delimiter between MAC
'address members
Text1.Text = GetMACAddress("-")

End Sub

Private Function GetMACAddress(sDelimiter As String) As String

'retrieve the MAC Address for the network controller
'installed, returning a formatted string

Dim tmp As String
Dim pASTAT As Long
Dim NCB As NET_CONTROL_BLOCK
Dim AST As ASTAT
Dim cnt As Long

'The IBM NetBIOS 3.0 specifications defines four basic
'NetBIOS environments under the NCBRESET command. Win32
'follows the OS/2 Dynamic Link Routine (DLR) environment.
'This means that the first NCB issued by an application
'must be a NCBRESET, with the exception of NCBENUM.
'The Windows NT implementation differs from the IBM
'NetBIOS 3.0 specifications in the NCB_CALLNAME field.
NCB.ncb_command = NCBRESET
Call Netbios(NCB)

'To get the Media Access Control (MAC) address for an
'ethernet adapter programmatically, use the Netbios()
'NCBASTAT command and provide a "*" as the name in the
'NCB.ncb_CallName field (in a 16-chr string).
NCB.ncb_callname = "* "
NCB.ncb_command = NCBASTAT

'For machines with multiple network adapters you need to
'enumerate the LANA numbers and perform the NCBASTAT
'command on each. Even when you have a single network
'adapter, it is a good idea to enumerate valid LANA numbers
'first and perform the NCBASTAT on one of the valid LANA
'numbers. It is considered bad programming to hardcode the
'LANA number to 0 (see the comments section below).
NCB.ncb_lana_num = 0
NCB.ncb_length = Len(AST)

pASTAT = HeapAlloc(GetProcessHeap(), _
HEAP_GENERATE_EXCEPTIONS Or _
HEAP_ZERO_MEMORY, _
NCB.ncb_length)

If pASTAT <> 0 Then

NCB.ncb_buffer = pASTAT
Call Netbios(NCB)

CopyMemory AST, NCB.ncb_buffer, Len(AST)

'convert the byte array to a string
GetMACAddress = MakeMacAddress(AST.adapt.adapter_address(), sDelimiter)

HeapFree GetProcessHeap(), 0, pASTAT

Else
Debug.Print "memory allocation failed!"
Exit Function
End If

End Function

Private Function MakeMacAddress(b() As Byte, sDelim As String) As String

Dim cnt As Long
Dim buff As String

On Local Error GoTo MakeMac_error

'so far, MAC addresses are
'exactly 6 segments in size (0-5)
If UBound(b) = 5 Then

'concatenate the first five values
'together and separate with the
'delimiter char
For cnt = 0 To 4
buff = buff & Right$("00" & Hex(b(cnt)), 2) & sDelim
Next

'and append the last value
buff = buff & Right$("00" & Hex(b(5)), 2)

End If 'UBound(b)

MakeMacAddress = buff

MakeMac_exit:
Exit Function

MakeMac_error:
MakeMacAddress = "(error building MAC address)"
Resume MakeMac_exit

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:obtener la MAC ADDRESS de la maquina

Publicado por Roberto C. Barraza (1 intervención) el 22/01/2011 19:14:57
Este es un VBS con el que sacaba la MAC de las maquinas y lo metia a un archivo llamado MAC.BAT para utilizarlo en distintos procesos.

Espero y te sirva.
===============================================================
strComputer = "."
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objItem in colItems
MAC = objItem.MACAddress
For Each strAddress in objItem.IPAddress
IP = strAddress
Next
Next

Dim rutamac,file,filesys,escribemac,fecha

'Aqui escribe la ruta donde quieras el archivo con la MAC
rutamac="c:\"

set filesys=CreateObject("Scripting.FileSystemObject")
fecha = formatdatetime(now)

'Aqui elimina ":" ya que este formato no lo necesitaba
MAC = replace(MAC,":","")
set escribemac=filesys.CreateTextFile(rutamac & "MAC.BAT",true)
escribemac.writeline("set MAC="&MAC)

WScript.Quit
================================================================
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

obtener la MAC ADDRESS de la maquina

Publicado por alfonso (66 intervenciones) el 24/08/2014 23:56:25
si lo necesitas para vb6
pon esto al principio del formulario ants de todo el codigo

1
2
3
4
5
6
7
8
9
10
11
Public Function leerIDcomputadora() As String
Dim colNetAdapters, objWMIService As Object
Dim strComputer As String
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where
IPEnabled=TRUE")
For Each objitem In colNetAdapters
leerIDcomputadora = objitem.MACAddress
Next
End Function


luego en el form load o donde quieras utiliza una etiqueta y muestras la mac
etiqueta.Caption = leerIDcomputadora

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar