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

1
2
3
4
5
6
7
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

1
2
3
4
5
6
7
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 [email protected]
==============================================
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
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
-1
Comentar
Imágen de perfil de JOSE
Val: 58
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:obtener la MAC ADDRESS de la maquina

Publicado por JOSE (36 intervenciones) el 14/12/2019 11:33:05
Hola Juan carlos veras he probado este codigo y no se si estare haciendo algo mal pero no funciona estoy con visual 6 ,veras el codigo lo he metido en un modulo y esto Text1.Text = GetMACAddress("-") en un boton pero cuando le pulto me da error en GetMACAddress("-") espero me pueda decir algo un saludo ..
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 (67 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
1
Comentar

obtener la MAC ADDRESS de la maquina

Publicado por tcdaza (1 intervención) el 23/09/2019 03:54:10
Excelente aporte . rapido y sencillo.
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 Alberto José López Zambrano (1 intervención) el 09/02/2024 03:06:54
Excelente, igual a un comentario que alguien escribió antes, opino lo mismo, rápido y sencillo
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