![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Porblema al obtener la MAC
Buenos día a todos! cuanto tiempo sin pasar por aquí!
Os pongo en antecedentes! encontré hace tiempo una función por aquí que me devolvía la MAC y está genial pero tengo un ligero problemilla! Dicha función la uso para el registro de mi aplicación yhace tiempo me paso en un cliente pero uno entre más de 300 pensaba que sería problema suyo y lo arreglé saltándome ésa validación pero debería meter un código que solo yo conozco y me mandaba un mail cada vez que lo hacía con varias características del ordenador, por si me hackeaban la aplicación. Bien el problema es que me ha vuelto a pasar con otro cliente totalmente distinto, cada vez que apaga el ordenador la función me devuelve una MAC distinta y por tanto me des-registra la aplicación. Os pongo la función para ver si me sabéis decir el por qué de éste problema porque yo llevo dos semanas volviéndome loco y no lo encuentro. Código:
function GetPrimaryNicMacAddress: String; type TGUID = record A, B: word; D, M, S: word; MAC: array[ 1..6 ] of byte; end; var UuidCreateFunc: function(Var guid: TGUID): HResult; stdcall; handle: THandle; g: TGUID; WinVer: _OSVersionInfoA; i: integer; // ErrCode : HResult; begin try WinVer.dwOSVersionInfoSize := sizeof(WinVer); // Tamaño getversionex(WinVer); // Obtiene info del Windows en uso handle := LoadLibrary('RPCRT4.DLL'); // Obtiene el handle de la DLL if WinVer.dwMajorVersion >= 5 then {Windows 2000 ó superior} @UuidCreateFunc := GetProcAddress(Handle, 'UuidCreateSequential') else // (Win98 o menor) @UuidCreateFunc := GetProcAddress(Handle, 'UuidCreate'); UuidCreateFunc(g); // Obtiene la info result := ''; for i := 1 to 6 do Result := Result + IntToHex(g.MAC[ i ], 2); // Concatena la MAC Address except Result := ''; // Resultado nulo end; end; Quique~ |
#2
|
||||
|
||||
¿Has pensado que puede haber algún software instalado en ese cliente que cambie la mac?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Hola Casimiro:
Si, he revisado que no tenga nada raro instalado solo veo antivirus y poco más ¿sabéis de algún programa especifico que te cambie la MAC cada vez que apagas el ordenador? Gracias |
#4
|
||||
|
||||
Cuando lo apagas no, pero cuando lo enciendes supongo que sí, algunos virus, por ejemplo, he leido que hace eso.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
Cita:
Yo también pensé que es un virus o algo pero el cliente me asegura que no tiene ninguno que ha pasado el antivirus y no le ha detectado ninguna amenaza. Me tocará hacer lo mismo que al otro pero me resulta raro que ya me ha pasado dos veces por eso comprobé la función y os pedí ayuda ya que no encuentro el posible fallo. Gracias! |
#6
|
||||
|
||||
Si pasa en un equipo y los demás van bien, el problema es en ese equipo.
En cuanto a lo que diga el cliente, nunca jamás hago caso a eso.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Por lo que parece, ese procedimiento obtiene la MAC a partir de un GUID.
La GUID se generaba a partir de la MAC del ordenador y otras variables mas, para tener un identificador único en el mundo. Esto generó un problema de privacidad, ya que se podía identificar al ordenador que había generado ese valor. Este problema de privacidad hizo que los GUID no se generaran con la MAC del ordenador. http://es.wikipedia.org/wiki/Globally_unique_identifier Cita:
Yo lo hago de dos formas: Busco la MAC de una direccion IP (para buscar la MAC del servidor de la base de datos) Busco la MAC del ordenador. (esto puede traer algún problema si es un portatil y a veces se conecta por wifi y otras por ethernet) Espero te sirva.
|
#8
|
|||
|
|||
Hola duilioisola:
Gracias por contestar, vaya fallo tuve en no darme cuenta sobre las GUID. Leyendo tu código la función MySendARP devuelve la MAC de una IP por lo que ¿podría hacer esta llamada? Código:
sMAC := MySendARP( DameIPLocal ); Muchísimas gracias. Casimiro, nunca me fio de ellos ni si quiera cuando tienen razón jeje. Saludos, |
#9
|
||||
|
||||
QuiqueSalamanca,
Cita:
![]() Revisa este código: El código anterior en Delphi 7 sobre Windows 7 Professional x32, permite obtener el MacAddress de una NIC Física por medio de su IP asignada la cual es obtenida de forma automática. Nota: El código propuesto fue probado en una máquina que tiene una sola NIC Física instalada, funcionado correctamente según lo esperado, desconozco el comportamiento del mismo si es utilizado en una máquina que tengo dos o mas NIC, por ejemplo : Un Servidor. Espero sea útil ![]() Nelson. |
#10
|
||||
|
||||
QuiqueSalamanca,
Continuación del Msg #9 ![]() Revisa este código: El código anterior en Delphi 7 sobre Windows 7 Professional x32, permite obtener el MacAddress de una NIC por medio del identificador de connección de red asociado, que se encuentra en : Control Panel -> Network and Internet -> Network Connections. Espero sea útil ![]() Nelson. Última edición por nlsgarcia fecha: 01-09-2014 a las 01:43:14. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Porblema para Graficar | nelostanley | Gráficos | 2 | 18-05-2012 01:19:31 |
Porblema de conexion | chipsoni | Conexión con bases de datos | 0 | 08-02-2007 07:44:49 |
obtener el dia,mes y año | noe | Firebird e Interbase | 3 | 17-02-2005 07:49:22 |
Porblema con subtotales y totales | Choclito | Impresión | 1 | 08-10-2004 11:24:31 |
Porblema con fecha | agora18 | Varios | 4 | 30-01-2004 17:53:10 |
![]() |
|