JavaScript obtenga información de hardware y sistema de computadora cliente
A través de WMI para obtener información de hardware y sistema de computadora del cliente:
Copiar código del código de la siguiente manera:
función getSysInfo () {
var local = new ActiveXObject ("wbemscripting.swbemlocator");
servicio var = local.connectserver (".");
// Información de CPU
var cpu = new Enumerator (Service.Execquery ("Seleccionar * de Win32_Processor"). item () ;;);
var cputype = cpu.name, hostname = cpu.systemname;
// Información de memoria
var memoria = new Enumerator (Service.Execquisery ("Seleccionar * de Win32_PhysicalMemory");););
For (var mem = [], i = 0 ;! Memory.Atend (); Memory.MoVExt ()) MEM [i ++] = {cap: Memory.Item (). .Itemm () .speed}
// Información del sistema
var system = new Enumerator (Service.execquery ("Seleccionar * de Win32_ComputerSystem"). item ();
Var PhysicMenCap = Math.ceil (System.TotalPhysicalMemory/1024/1024), Curuser = System.Username, CPucount = System.NumberProcessors
Return {cputype: cputype, cPucount: cPucount, hostname: hostname, curuser: curuser, memcap: fisysicmencap, mem: mem}
}
La implementación del código incluye principalmente estas piezas:
Primero pase el nuevo ActiveXObject ("WBEMScripting.SwBemLocator");
A través de local.connectserver (".");
También puede acceder a otras computadoras).
A través de Service.Execquery ("Seleccionar * de Win32_Processor"), una declaración SQL similar (de hecho, la información del sistema también se almacena en un archivo de base de datos en los cálculos) para obtener el conjunto de registros que necesitamos.
Cree un objeto enumerado a través de un nuevo enumertor, y puede atravesar la información a continuación.
Nota: La premisa de ejecutar es modificar la configuración de seguridad del navegador, "Permitir ActiveX, que no está marcado como seguro",
El funcionamiento del script ".
Aquí está la información principal de los usuarios de CPU, memoria y sistema.
A más información. La clase de información común se enumera a continuación:
Win32_processor // procesador CPU
Win32_PhysicalMemory // Memoria física
Win32_keyboard // teclado
Win32_PointingDevice // dispositivo de entrada de punto, como el mouse
Win32_diskdrive // conductor del disco duro
Win32_cdromdrive // disco de CD
Win32_baseboard // placa base
Win32_bios // chip de bios
Win32_parallelport //
Win32_serialport // puerto serie
Win32_SoundDevice // Configuración multimedia
Win32_usbController // controlador USB
Win32_networkadapter // adaptador de red
Win32_networkAdapterConfiguration // Configuración del adaptador de red
Win32_printer // impresora
Win32_printerconfiguration // Configuración de la impresora
Win32_printjob // tarea de impresora
Win32_tcpipprinterport // puerto de impresora
Win32_potsmodem // módem
Win32_potsmodemtoserialport // puerto de módem
Win32_desktopmonitor // pantalla
Win32_videocontroller // Detalles de la tarjeta gráfica.
Win32_videosettings // El modo de visualización admitido por la tarjeta gráfica.
Win32_Timezone // Zona horaria
Win32_systemdriver // conductor
Win32_DiskPartition // Partition de disco
Win32_logicaldisk // disco lógico
Win32_logicalMemoryConfiguration // Configuración de memoria lógica
Win32_pagefile // Información del archivo de página del sistema
Win32_pageFilesetting // Configuración del archivo de página
Win32_bootconfiguration // Configuración de inicio del sistema
Win32_operatingsystem // Información del sistema operativo
Win32_startupCommand // El programa de inicio automático del sistema
Win32_Service // Servicio de instalación del sistema
Win32_group // Grupo de gestión del sistema
Win32_groupuser // número de cuenta de grupo de sistema
WIN32_USERACCOUNT // Cuenta de usuario
Win32_process // Proceso del sistema
Win32_thread // hilo del sistema
Win32_share // compartir
Win32_networkClient // El cliente en línea instalado
Win32_networkprotocol // El protocolo de red instalado
Para obtener información completa y listas detalladas de la clase WMI Win32, consulte MSDN:
http://msdn2.microsoft.com/en-s/library/aa394084 (vs.85) .aspx
Ejemplo:
Copiar código del código de la siguiente manera:
Función Button1_onclick () {// Información de CPU
var local = new ActiveXObject ("wbemscripting.swbemlocator");
servicio var = local.connectserver (".");
VAR Propiedades = servicio.execquery ("Seleccionar * de Win32_Processor");
var e = nuevo enumerador (propiedades);
document.write ("<table border = 1>");
para (;! E.Atend (); E.MovenExt ())
{{
var p = e.item ();
document.write ("<Ter>");
document.write ("<TD>" + P.Caption + "</td>");
document.write (<td> " + p.deviceId +" </td> ");
document.write ("<TD>" " + p.name +" </td> ");
document.write ("<TD>" " + P.Cpustatus +" </td> ");
document.write ("<Td>" " + P.AVailability +" </td> ");
document.write ("<TD>" " + P.Level +" </td> ");
document.write ("<TD>" " + P.ProcessorId +" </td> ");
document.write ("<TD>" " + P.SystemName +" </td> ");
document.write ("<TD>" + P.Processortype + "</td>");
document.write ("</tr>);
}
document.write ("</table>");
}
Función Button2_onclick () {// Información de CD-ROM
var local = new ActiveXObject ("wbemscripting.swbemlocator");
servicio var = local.connectserver (".");
VAR Propiedades = servicio.execquery ("Seleccionar * de win32_cdromdrive");
var e = nuevo enumerador (propiedades);
document.write ("<table border = 1>");
para (;! E.Atend (); E.MovenExt ())
{{
var p = e.item ();
document.write ("<Ter>");
document.write ("<TD>" + P.Caption + "</td>");
document.write ("<Td>" " + P.descript +" </td> ");
document.write ("<Td>" + P.drive + "</td>");
document.write ("<Td>" " + p.status +" </td> ");
document.write ("<TD>" " + P.MedialOaded +" </td> ");
document.write ("</tr>);
}
document.write ("</table>");
}
Función button3_onclick () {// Información del teclado
var local = new ActiveXObject ("wbemscripting.swbemlocator");
servicio var = local.connectserver (".");
VAR Propiedades = servicio.execquer ("Seleccionar * de Win32_Keyboard");
var e = nuevo enumerador (propiedades);
document.write ("<table border = 1>");
para (;! E.Atend (); E.MovenExt ())
{{
var p = e.item ();
document.write ("<Ter>");
document.write ("<Td>" " + P.descript +" </td> ");
document.write ("<TD>" " + p.name +" </td> ");
document.write ("<Td>" " + p.status +" </td> ");
document.write ("</tr>);
}
document.write ("</table>");
}
Función Button4_onclick () {// Información de la placa base
var local = new ActiveXObject ("wbemscripting.swbemlocator");
servicio var = local.connectserver (".");
VAR Properties = Service.ExecQuery ("Seleccionar * de Win32_BaseBoard");
var e = nuevo enumerador (propiedades);
document.write ("<table border = 1>");
para (;! E.Atend (); E.MovenExt ())
{{
var p = e.item ();
document.write ("<Ter>");
document.write ("<TD>" " + P.Hostingboard +" </td> ");
document.write ("<TD>" " + P.Manufacturer +" </td> ");
document.write ("<TD>" + p.Poweredon + "</td>");
document.write ("<TD>" + P.Product + "</td>");
document.write ("<Td>" " + P. P. P. P." </td> ");
document.write ("<Td>" " + p.version +" </td> ");
document.write ("</tr>);
}
document.write ("</table>");
}
Además, también puede obtener la información relevante de las siguientes maneras:
Copiar código del código de la siguiente manera:
<html> <cead> <title> wmi scripting html </title>
<Meta http-oquiv = content-type content = "text/html; charset = gb2312">
<Script language = jscript event = "onCompleted (HResult, PerrorObject, PasyncContext)" for = foo>
document.forms [0] .txtmacadr.value = unescape (macaddr);
document.forms [0] .txtipaddr.value = unescape (ipaddr);
document.forms [0] .txtdnsname.value = unescape (sdnsname);
//document.formbar.submit ();
</script>
<Script Language = JScript Event = ONOBJECTRADY (objobject, objasyncContext) for = foo>
if (obJObject.IpeNabled! = NULL && objobject.IPEnabled! = "Undefined" && obJObject.IpeNabled == verdadero)
{{
If (objobject.macaddress! = Null && objobject.macaddress! = "Indefinido")
Macaddr = object.macaddress;
if (obJObject.IPEnabled && objobject.ipaddress (0)! = null && objobject.ipadddress (0)! = "indefinido")
Ipaddr = object.ipaddress (0);
if (objobject.dnshostname! = null && objobject.dnshostname! = "indefinido")
sdnsname = object.dnshostName;
}
</script>
<Meta content = "mshtml 6.00.2800.1106" name = Generator> </Head>
<Body>
<Object id = local classid = clsid: 76a64158-cb41-11d1-8b02-00600806d9b6 visteText> </objeto>
<Object id = foo classid = clsid: 75718c9a-f029-11d1-a1ac-004fb6c223> </ject>
<Script Language = JScript>
servicio var = local.connectserver ();
var macaddr;
var iPaddr;
var DomainDDR;
var sdnsname;
Servicio.security_.ImmipsonationLevel = 3;
Service.instancesofasync (foo, 'win32_networkAdapterconfiguration');
</script>
<Form ID = "Formfoo" name = "Formbar" Action = "index.do" método = "post"> <input value = "00-11-11-b4-52-eF" name = "txtmacaddr"> <input Valor = "210.42.38.50" name = "txtipaddr"> <input value = "zhupan" name = "txtdnsname"> </body> </html>
Copiar código del código de la siguiente manera:
De hecho, lo más importante es usar dos ActiveX:
<Object id = local classid = clsid: 76a64158-cb41-11d1-8b02-00600806d9b6 visteText> </objeto>
<Object id = foo classid = clsid: 75718c9a-f029-11d1-a1ac-004fb6c223> </ject>
Sin embargo, estos dos ActiveX se construyen sistemáticamente, sin tener que descargar o registrarse.
El siguiente trabajo es interactuar con ActiveX con scripts
<html>
<Evista>
<script language = "javaScript" type = "text/javaScript">
función getCode () {
var local = new ActiveXObject ("wbemscripting.swbemlocator");
servicio var = local.connectserver (".");
VAR Propiedades = servicio.execquer ("Seleccione * de Win32_netWorkAdapterConfiguration donde ipenAbld = true");
var e = nuevo enumerador (propiedades);
document.write ("<table border = 1>");
para (;! E.Atend (); E.MoVENEXT ()) {
var p = e.item ();
//If.ip.ipadddress (0)! = NULL && P.IPADDRESS (0)! ) .0.1 ") {{
document.write ("<Ter>");
document.write ("<TD>" " + P.ServiceName +" </td> ");
document.write ("<Td>" " + p.macaddress +" </td> ");
document.write ("<Td>" " + p.ipaddress (0) +" </td> ");
document.write ("</tr>);
// Romper;
//}
}
document.write ("</table>");
}
</script>
</ablo>
<Body>
<botón id = "test" value = "test" onClick = "getCode ()"> test </button>
</body>
</Html>
Clase Win32_networkAdapterConfiguration: CIM_SETING
{{
arpalwayssourceroute booleano;
Arpuseethersnap booleano;
subtítulos de cadena;
cadena dataBASEPATH;
Boolean DeadgwDetectenAbled;
cadena defaultIPGateway [];
Uint8 defaultTos;
Uint8 defaulttl;
Descripción de la cadena;
Booleano dhcpenabled;
DateTime dhcPleaseExpires;
DateTime dhcleaseBtaine;
cadena dhcpserver;
cadena dnsdomain;
cadena dnsdomainsuffixsearchordr [];
Boolean DNSEnabledForWinSrSolution;
cadena dnshostName;
cadena dnsServerSearchOrder [];
Boolean domaindnsregistratinAdable;
UINT32 ForwardBuffMemory;
Boolean fulldnsregistrationnable;
uint16 gatewaycostMetric [];
Uint8 igmplevel;
Índice uint32;
InterfaceIndex uint32;
cadena ipaddress [];
Uint32 ipconnectionMetric;
Boolean ipenable;
Boolean ipfiltersecurityEnabled;
Booleano ipportsecurityedableBable;
cadena ipsecPermitipprotocols [];
cadena ipsecPermittCpports [];
cadena ipsecPermitudPports [];
cadena ipsubnet [];
Boolean IpUseberobroadcast;
cadena ipxaddress;
Boolean ipxEnabled;
Uint32 ipxframeType [];
Uint32 ipxmediatype;
String IPXNetWorkNumber [];
cadena ipxvirtualNetNumber;
UINT32 KeepAliveInterval;
Uint32 KeepAlivetime;
cadena Macaddress;
Uint32 mtu;
Uint32 numforwardpackets;
Booleano pmtubhdetectenApled;
Booleano pmtudiscoveryed;
servicio de cadena;
String settingId;
UINT32 TCPIPNETBIOSOPTIONS;
Uint32 tcpmaxconnectransmisisions;
Uint32 tcpmaxdataretransmisiones;
UINT32 TCPNUMConnections;
Boolean tcpuserfc11122urgentpointer;
Uint16 tcpwindowsize;
Boolean winsenablelmhostslookup;
String winShostlookUpFile;
Cadena WinsPrimaryServer;
Cadena winsscopeid;
String WinsSecondaryServer;
};