Es ya posible utilizar HardwareID con FWH?
- RodolfoRBG
- Posts: 257
- Joined: Tue May 16, 2006 4:46 pm
- Location: San Luis Potosi, SLP, Mexico
- Contact:
Es ya posible utilizar HardwareID con FWH?
Buscando otra forma de proteger los sistemas, ademas de con una memoria USB, encontre en el foro un apunte que data del 2008 relacionado a utilizar un DLL llamado HardwareID anunciado en: http://www.azsdk.com/hardwareid.html y que se me haria excelente para obtener el numero de serie fisico del CPU y con eso proteger los sistemas que desarrollamos.
A 4 años de eso, es ya posible utilizarlo con FWH?
Intente usar el numero de serie de la tarjeta de red pero he tenido algunos problemas, en un caso concreto la maquina del cliente me regresaba un arreglo con 3 tarjetas de red diferentes. Utilize el numero de serie del 1er elemento del arreglo y dias despues, no se porque, desaparecio y ahora me regresa un arreglo con solo las otras 2 tarjetas de red y por lo mismo mi sistema ya no lo autorizaba a trabajar. Quiero evitar que me suceda eso nuevamente y por lo mismo buscaria utilizar mejor la serie del CPU.
A 4 años de eso, es ya posible utilizarlo con FWH?
Intente usar el numero de serie de la tarjeta de red pero he tenido algunos problemas, en un caso concreto la maquina del cliente me regresaba un arreglo con 3 tarjetas de red diferentes. Utilize el numero de serie del 1er elemento del arreglo y dias despues, no se porque, desaparecio y ahora me regresa un arreglo con solo las otras 2 tarjetas de red y por lo mismo mi sistema ya no lo autorizaba a trabajar. Quiero evitar que me suceda eso nuevamente y por lo mismo buscaria utilizar mejor la serie del CPU.
- Willi Quintana
- Posts: 1025
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Hola... prueba con esto,,,,,
Code: Select all | Expand
Function WMainInfo()
LOCAL oDatos, oSrv, oJob, i
LOCAL nFree:= ""
LOCAL oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
LOCAL objWMI:= oLoc:ConnectServer()
LOCAL oSistema:= objWMI:ExecQuery("Select * from Win32_PhysicalMedia")
LOCAL oDisco:= objWMI:ExecQuery("Select * from Win32_LogicalDisk")
LOCAL oParti:= objWMI:ExecQuery("Select * from CIM_DiskPartition")
LOCAL oDisket:= objWMI:ExecQuery("Select * From Win32_LogicalDisk Where DeviceID = 'A:'")
LOCAL objUnd:= objWMI:ExecQuery("Select * from Win32_MappedLogicalDisk")
LOCAL oUnd:= objWMI:ExecQuery("Select * from Win32_CDROMDrive")
LOCAL oResolu:= objWMI:ExecQuery("Select * from Win32_DesktopMonitor")
LOCAL oSistem:= objWMI:ExecQuery("Select * from Win32_OperatingSystem")
LOCAL oUsers:= objWMI:ExecQuery("Select * from Win32_Account")
LOCAL oServ:= objWMI:ExecQuery("Select * from Win32_Service Where Name = 'Themes'")
LOCAL oTime:= objWMI:ExecQuery("Select * from Win32_LocalTime")
LOCAL oProc:= objWMI:ExecQuery("Select * from Win32_Processor")
LOCAL oJbs:= objWMI:ExecQuery("SELECT Product, SerialNumber FROM Win32_BaseBoard")
LOCAL oIpSet:= objWMI:ExecQuery("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE")
LOCAL oList := objWMI:ExecQuery("Select * from Win32_ComputerSystem")
//Return(Nil)
objWMI:= oLoc:ConnectServer()
oJbs := objWMI:ExecQuery( "select * from Win32_BaseBoard" )
//oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard" )
FOR Each oDatos In oSistema
MsgInfo("Serial de fabrica: " + ALLTRIM(cValToChar(oDatos:SerialNumber)),"Numero de serie del disco duro")
NEXT
FOR Each oDatos In oDisco
MsgInfo("Unidad: " + ALLTRIM(cValToChar(oDatos:Name)) + "\ Serial: " + ALLTRIM(cValToChar(oDatos:VolumeSerialNumber)),"Unidad y serial lógico de las unidades de disco")
NEXT
FOR Each oDatos in oParti
MsgInfo(ALLTRIM(cValToChar(oDatos:Name)) + " - Tamaño: " +ALLTRIM(cValToChar(oDatos:Size)) + " En: " + ALLTRIM(cValToChar(oDatos:SystemName)) + " - Tipo: " + ALLTRIM(cValToChar(oDatos:TYPE)),"Particiones disponibles")
NEXT
FOR Each oDatos in oDisket
nFree:= oDatos:FreeSpace
IF VALTYPE(nFree) = "U"
MsgInfo("No hay diskete en la unidad A:\","Aviso del WMI de Windows")
ELSE
MsgStop("Hay un diskete en la unidad A:\","Aviso del WMI de Windows")
ENDIF
NEXT
FOR Each oDatos In objUnd
MsgInfo("Device ID: " + oDatos:DeviceID +" Nombre: " + oDatos:Name +" Espacio Libre: " + cValtoChar(oDatos:FreeSpace) + " Tamaño: " + cValtoChar(oDatos:Size),"Lista de unidades Mapeadas en Mi PC")
NEXT
FOR Each oDatos in oUnd
MsgInfo("Unidad: " + oDatos:Drive + " " + "Nombre: " + oDatos:Caption,"Unidades de CD instaladas en el equipo")
NEXT
FOR Each oDatos in oResolu
MsgInfo("Trabajando a Resolución de Alto: " + cValToChar(oDatos:ScreenHeight) + " y Ancho: " + cValToChar(oDatos:ScreenWidth),"Resolucion de Panralla")
NEXT
FOR Each oDatos In oSistem
MsgInfo(oDatos:InstallDate,"Fecha de Instalación de Windows XP")
NEXT
FOR Each oDatos in oSistem
MsgInfo("Directorio de Windows es: " + oDatos:WindowsDirectory +" Directorio del Sistema es: "+ oDatos:SystemDirectory,"Directorio de Windows y del Sistema")
NEXT
/*
FOR Each oDatos in oUsers
MsgInfo(cValToChar(oDatos:Name) + " - " + cValToChar(oDatos:Caption),"Lista de Usuarios de Windows")
NEXT
MsgInfo("Deshabilitarndo los Themes en Windows XP")
FOR Each oDatos in oServ
oDatos:StopService()
SysRefresh()
NEXT
MsgInfo("Habilitando los Themes en Windows XP")
FOR Each oDatos in oServ
oDatos:StartService()
SysRefresh()
NEXT
*/
FOR Each oDatos in oSistem
MsgInfo(oDatos:Caption + " " + oDatos:VERSION,"Sistemas operativos instalados en el PC")
NEXT
FOR Each oDatos in oTime
MsgInfo( "Día: " + cValToChar(oDatos:DAY) + CRLF +;
"Día de la semana: " + cValToChar(oDatos:DayOfWeek) + CRLF +;
"Hora: " + cValToChar(oDatos:Hour) + CRLF +;
"Minutos: " + cValToChar(oDatos:Minute) + CRLF +;
"Mes: " + cValToChar(oDatos:MONTH) + CRLF +;
"Segundos: " + cValToChar(oDatos:Second) + CRLF +;
"Semana en el mes: " + cValToChar(oDatos:WeekInMonth) + CRLF +;
"Año: " + cValToChar(oDatos:YEAR),"Dia, Hora, Mes y Año desde WMI")
NEXT
FOR EACH oDatos IN oProc
MsgInfo("El Nombre del Procesador es: "+Alltrim(cValtoChar(oDatos:Name)),"Desde WMI")
MsgInfo("la Velocidad Actual del Procesador es: "+Alltrim(cValtoChar(oDatos:CurrentClockSpeed)) + " Mghz","Desde WMI")
MsgInfo("la Velocidad Màxima del Procesador es: "+Alltrim(cValtoChar(oDatos:MaxClockSpeed)) + " Mghz","Desde WMI")
NEXT
FOR EACH oDatos IN oJbs
MsgInfo("El Tipo de la MotherBoard es: "+Alltrim(cValtoChar(oDatos:Product)),"Desde WMI")
MsgInfo("El Número de Serie de la MotherBoard es: "+Alltrim(cValtoChar(oDatos:SerialNumber)),"Desde WMI")
NEXT
FOR EACH oDatos IN oIPSet
MsgInfo("El IPAddress es: " + Alltrim(cValtoChar(oDatos:IPAddress(0))), "Desde WMI")
MsgInfo("El MacAddress es: " + Alltrim(cValtoChar(oDatos:IPAddress(1))), "Desde WMI")
NEXT
FOR EACH oDatos IN oList
If oDatos:PartOfDomain
MsgInfo("Dominio: " + oDatos:Domain, "Desde WMI")
Else
MsgInfo("Grupo de Trabajo: " + oDatos:Domain, "Desde WMI")
EndIf
Next
Return nil
- RodolfoRBG
- Posts: 257
- Joined: Tue May 16, 2006 4:46 pm
- Location: San Luis Potosi, SLP, Mexico
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Mi estimado Willi,
Gracias por tu respuesta, desgraciadamente el dato que mas me interesa es el Número de Serie de la MotherBoard y al correrlo ese dato me lo deja en blanco. Tengo WVista. Necesito algo mas?, agregarle alguna dll u otro componente?
Gracias por tu respuesta, desgraciadamente el dato que mas me interesa es el Número de Serie de la MotherBoard y al correrlo ese dato me lo deja en blanco. Tengo WVista. Necesito algo mas?, agregarle alguna dll u otro componente?
- Antonio Linares
- Site Admin
- Posts: 42521
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 31 times
- Been thanked: 75 times
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Rodolfo,
Te aparece el MacAddress ? Tal vez puede servirte ese serial que identifica a la tarjeta de red
Te aparece el MacAddress ? Tal vez puede servirte ese serial que identifica a la tarjeta de red
- pablovidal
- Posts: 401
- Joined: Thu Oct 06, 2005 10:15 pm
- Location: Republica Dominicana
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Rodolfo, Prueba esto:
Code: Select all | Expand
Static Function SerialProtect()
//-----------------------------------------------------------
local oLoc := CreateObject( "wbemScripting.SwbemLocator" )
local oSrv := oLoc:ConnectServer(,"root\cimv2")
local aDrives := oSrv:ExecQuery( "SELECT * FROM Win32_ComputerSystemProduct" )
local oDrive, cSerial := ""
Local aData := {}
for each oDrive in aDrives
AADD( aData, oDrive:UUID )
Next
For nAt := 1 to Len( aData )
cSerial += Upper( AllTrim( cStr( aData[nAt] ) ) )
Next nAt
Return( cSerial )
Saludos,
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
- Willi Quintana
- Posts: 1025
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Hola Rodolfo,,, Te comento que lo que publique, funciona en XP y en W7,,, la verdad es que nunca use WVista, y no requiere nada mas que lo indicado,,,,
Salu2
Salu2
Re: Es ya posible utilizar HardwareID con FWH?
A mi me sucede lo mismo, el nro de serie del mother me sale en blanco, mi OS es windows 7 home premium
- RodolfoRBG
- Posts: 257
- Joined: Tue May 16, 2006 4:46 pm
- Location: San Luis Potosi, SLP, Mexico
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Antonio, gracias por tu sugerencia, el problema con la tarjeta de red es que me sucedio con un cliente que originalmente GetNetCardID() me regreso un arreglo con 3 tarjetas de red, tome como referencia la primera, pero no se porque, dias despues la 1ra ya no aparecia, solo las otras 2 por lo que ya no me servia de referencia y esto de proteger los sistemas en base a uno de estos datos es algo muy delicado por lo que debo tener la seguridad de que siempre me regrese el dato correcto antes de asumir que el cliente intento hacer una copia ilegal en otra maquina.
Willi, veo que no soy el unico al que le regresa un dato en blanco, de todas formas gracias por tu interes.
Pablo, tu funcion funciono perfectamente en WVista y me regresa una cadena de 36 caracteres. Mis preguntas son:
* Ese numero de serie es del Disco Duro? Del CPU o de que?
* Con que Windows funciona?
* Es confiable? Esto es, lo usas tu para proteger tus programas?
'chas gracias
Willi, veo que no soy el unico al que le regresa un dato en blanco, de todas formas gracias por tu interes.
Pablo, tu funcion funciono perfectamente en WVista y me regresa una cadena de 36 caracteres. Mis preguntas son:
* Ese numero de serie es del Disco Duro? Del CPU o de que?
* Con que Windows funciona?
* Es confiable? Esto es, lo usas tu para proteger tus programas?
'chas gracias
- pablovidal
- Posts: 401
- Joined: Thu Oct 06, 2005 10:15 pm
- Location: Republica Dominicana
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Pablo, tu funcion funciono perfectamente en WVista y me regresa una cadena de 36 caracteres. Mis preguntas son:
* Ese numero de serie es del Disco Duro? Del CPU o de que?
-- Es un numero unico de identificación
* Con que Windows funciona?
-- Desde Windows 2000 en Adelante (creo)
* Es confiable? Esto es, lo usas tu para proteger tus programas?
-- Si, es confiable, lo uso para proteger mi programa.
* Ese numero de serie es del Disco Duro? Del CPU o de que?
-- Es un numero unico de identificación
* Con que Windows funciona?
-- Desde Windows 2000 en Adelante (creo)
* Es confiable? Esto es, lo usas tu para proteger tus programas?
-- Si, es confiable, lo uso para proteger mi programa.
Saludos,
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
- RodolfoRBG
- Posts: 257
- Joined: Tue May 16, 2006 4:46 pm
- Location: San Luis Potosi, SLP, Mexico
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Perfeeeecto Pablo,
Sabiendo que tu ya lo usas para proteger tus programas me da mucha seguridad, sinembargo me gustaria saber mas con lo que estaria trabajando:
* Es un numero unico de identificación de que? Del CPU, Del Disco Duro?
* Esta identificacion cambiaria si formatean el disco duro o lo cambian? Si cambian la tarjeta de red? O en que circunstancias cambiaria?
Sabiendo que tu ya lo usas para proteger tus programas me da mucha seguridad, sinembargo me gustaria saber mas con lo que estaria trabajando:
* Es un numero unico de identificación de que? Del CPU, Del Disco Duro?
* Esta identificacion cambiaria si formatean el disco duro o lo cambian? Si cambian la tarjeta de red? O en que circunstancias cambiaria?
- pablovidal
- Posts: 401
- Joined: Thu Oct 06, 2005 10:15 pm
- Location: Republica Dominicana
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Saludos,
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
- RodolfoRBG
- Posts: 257
- Joined: Tue May 16, 2006 4:46 pm
- Location: San Luis Potosi, SLP, Mexico
- Contact:
Re: Es ya posible utilizar HardwareID con FWH?
Don Pablo, excelente aporte al foro en especial para quienes buscamos proteger nuestros sistemas. Gracias por compartir tus conocimientos.