JavaScript 클라이언트 컴퓨터 하드웨어 및 시스템 정보를 얻습니다
클라이언트 컴퓨터 하드웨어 및 시스템 정보를 얻기 위해 WMI를 통해 :
다음과 같이 코드 코드를 복사하십시오.
함수 getSySinfo () {
var local = new ActiveXobject ( "wbemscripting.swbemlocator");
var service = local.connectserver ( ".");
// CPU 정보
var cpu = new Enumerator (service.execquery ( "select * from win32_processor"). item () ;;);
var cputype = cpu.name, hostname = cpu.systemname;
// 메모리 정보
var memory = new enumerator (service.execquery ( "select * from Win32_PhysicalMemory");););
for (var mem = [], i = 0;! memory.atend (); memory.movenext ()) mem [i ++] = {cap : memory.item () .itemm () .speed}
// 시스템 정보
var system = new Enumerator (service.execquery ( "select * from 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 : physicmencap, mem : mem}
}
코드 구현에는 주로 다음 부분이 포함됩니다.
먼저 새로운 ActiveXobject ( "wbemscripting.swbemlocator")를 통과합니다.
local.connectserver를 통해 ( ".");
다른 컴퓨터에도 액세스 할 수도 있습니다).
service.execquery ( "select * from win32_processor")를 통해 유사한 SQL 문 (실제로 시스템 정보는 계산의 데이터베이스 유사 파일에도 저장됨)을 통해 필요한 레코드 세트를 얻습니다.
새 열거자를 통해 열거 된 개체를 만들면 아래에서 정보를 가로 질러 이동할 수 있습니다.
참고 : 달리기의 전제는 브라우저의 안전 설정을 수정하는 것입니다.
스크립트 작동 ".
다음은 CPU, 메모리 및 시스템 사용자의 주요 정보입니다.
자세한 정보. 일반 정보 클래스는 다음과 같습니다.
Win32_Processor // CPU 프로세서
Win32_PhysicalMemory // 물리적 메모리
Win32_keyboard // 키보드
WIN32_POINTINGDEVICE // 마우스와 같은 포인트 입력 장치
WIN32_DISKDRIVE // 하드 드라이브 드라이버
Win32_CDROMDRIVE // CD 드라이브
win32_baseboard // 마더 보드
Win32_BIOS // BIOS 칩
win32_parallelport //
win32_serialport // 직렬 포트
Win32_SoundDevice // 멀티미디어 설정
WIN32_USBCONTROLLER // USB 컨트롤러
WIN32_NETWORKADAPTER // 네트워크 어댑터
WIN32_NETWORKADAPTERCONFIGURATION // 네트워크 어댑터 설정
Win32_printer // 프린터
Win32_PrinterConfiguration // 프린터 설정
win32_printjob // 프린터 작업
WIN32_TCPIPPRINTERPORT // 프린터 포트
win32_potsmodem // 모뎀
WIN32_POTSMODEMTOSERIALPORT // 모뎀 포트
win32_desktopmonitor // 디스플레이
win32_videocontroller // 그래픽 카드 세부 정보.
win32_videoSettings // 그래픽 카드에서 지원되는 디스플레이 모드.
WIN32_TIMEZONE // 시간대
win32_systemdriver // 드라이버
WIN32_DISKPARTITION // 디스크 파티션
Win32_LogicalDisk // 논리 디스크
Win32_LogicalMemoryConfiguration // 논리 메모리 구성
Win32_PageFile // 시스템 페이지 파일 정보
win32_pagefilesetting // 페이지 파일 설정
WIN32_BOOTCONFIGURATION // 시스템 시작 구성
Win32_operatingsystem // 운영 체제 정보
WIN32_STARTUPCOMMAND // 시스템 자동 시작 프로그램
Win32_Service // 시스템 설치 서비스
Win32_Group // 시스템 관리 그룹
Win32_GroupUser // 시스템 그룹 계정 번호
win32_useraccount // 사용자 계정
Win32_Process // 시스템 프로세스
Win32_thread // 시스템 스레드
Win32_share // 공유
Win32_networkclient // 설치된 온라인 클라이언트
WIN32_NETWORKPROTOCOL // 설치된 네트워크 프로토콜
전체 정보 및 WMI Win32 클래스의 자세한 목록은 MSDN을 참조하십시오.
http://msdn2.microsoft.com/en-s/library/aa394084 (vs.85) .aspx
예:
다음과 같이 코드 코드를 복사하십시오.
함수 button1_onclick () {// cpu 정보
var local = new ActiveXobject ( "wbemscripting.swbemlocator");
var service = local.connectserver ( ".");
var properties = service.execquery ( "select * from win32_processor");
var e = 새로운 열거 자 (속성);
document.write ( "<테이블 테두리 = 1>");
for (;! 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.avaveability +"</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>");
}
함수 button2_onclick () {// CD-ROM 정보
var local = new ActiveXobject ( "wbemscripting.swbemlocator");
var service = local.connectserver ( ".");
var properties = service.execquery ( "select * from win32_cdromdrive");
var e = 새로운 열거 자 (속성);
document.write ( "<테이블 테두리 = 1>");
for (;! 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>");
}
함수 button3_onclick () {// 키보드 정보
var local = new ActiveXobject ( "wbemscripting.swbemlocator");
var service = local.connectserver ( ".");
var properties = service.execquery ( "select * from win32_keyboard");
var e = 새로운 열거 자 (속성);
document.write ( "<테이블 테두리 = 1>");
for (;! 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>");
}
함수 button4_onclick () {// 마더 보드 정보
var local = new ActiveXobject ( "wbemscripting.swbemlocator");
var service = local.connectserver ( ".");
var properties = service.execquery ( "select * from win32_baseboard");
var e = 새로운 열거 자 (속성);
document.write ( "<테이블 테두리 = 1>");
for (;! 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. P."</td> ");
document.write ( "<td>" " + p.version +"</td> ");
document.write ( "</tr>);
}
document.write ( "</table>");
}
또한 다음 방법을 통해 관련 정보를 얻을 수도 있습니다.
다음과 같이 코드 코드를 복사하십시오.
<html> <head> <title> WMI 스크립팅 html </title>
<meta http-equiv = 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 language = jscript event = onobjectready (objobject, objasynccontext) for = foo>
if (objobject.ipenabled! = null && objobject.ipenabled! = "undefined"&& objobject.ipenabled == true)
{{
if (objobject.macaddress! = null && objobject.macaddress! = "undefined")
macAddr = Object.MacAddress;
if (objobject.ipenabled && objobject.ipaddress (0)! = null && objobject.ipadddress (0)! = "undefined")
iPaddr = object.ipaddress (0);
if (objobject.dnshostname! = null && objobject.dnshostname! = "undefined")
sdnsname = Object.dnshostName;
}
</스크립트>
<meta content = "mshtml 6.00.2800.1106"name = generator> </head>
<body>
<객체 ID = 로컬 클래스 id = clsid : 76A64158-CB41-11D1-8B02-00600806D9B6 ViewTestext> </object>
<오브젝트 ID = foo classID = clsid : 75718C9A-F029-11D1-A1AC-004FB6C223> </object>
<script language = jscript>
var service = local.connectserver ();
var macaddr;
var iPaddr;
var domainddr;
var sdnsname;
service.security_.impersonationlevel = 3;
service.instancesofasync (foo, 'win32_networkadapterconfiguration');
</스크립트>
<form id = "formfoo"name = "formbar"action = "index.do"method = "post"> <input value = "00-11-11-b4-52-ef"name = "txtmacaddr"> <input value = "210.42.38.50"name = "txtipaddr"> <input value = "zhupan"name = "txtdnsname"> </body> </html>
다음과 같이 코드 코드를 복사하십시오.
실제로 가장 중요한 것은 두 개의 ActiveX를 사용하는 것입니다.
<객체 ID = 로컬 클래스 id = clsid : 76A64158-CB41-11D1-8B02-00600806D9B6 ViewTestext> </object>
<오브젝트 ID = foo classID = clsid : 75718C9A-F029-11D1-A1AC-004FB6C223> </object>
그러나이 두 개의 ActiveX는 다운로드하거나 등록 할 필요없이 체계적으로 구축됩니다.
다음 작업은 Scripts와 ActiveX와 상호 작용하는 것입니다.
<html>
<헤드>
<script language = "javaScript"type = "text/javaScript">
함수 getCode () {
var local = new ActiveXobject ( "wbemscripting.swbemlocator");
var service = local.connectserver ( ".");
var properties = service.execquery ( "select * from win32_networkadapterConfiguration where ipenabld = true");
var e = 새로운 열거 자 (속성);
document.write ( "<테이블 테두리 = 1>");
for (;! e.atend (); e.movenext ()) {
var p = e.iTem ();
//if.ip.ipadddress (0)! = "정의되지 않은"&& p.ipadddress (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>);
// 부서지다;
//}
}
document.write ( "</table>");
}
</스크립트>
</head>
<body>
<button id = "test"value = "test"onclick = "getCode ()"> 테스트 </button>
</body>
</html>
클래스 win32_networkadapterconfiguration : cim_setting
{{
부울 Arpalwayssourceroute;
부울 arpuseethersnap;
문자열 캡션;
문자열 databasepath;
부울 deadgwdetectenabled;
문자열 defaultipgateway [];
UINT8 DEFAULTTOS;
uint8 defaulttl;
문자열 설명;
부울 dhcpenabled;
DateTime dhcpleesexpires;
dateTime dhcpleaseobtaine;
문자열 dhcpserver;
문자열 dnsdomain;
문자열 dnsdomainsUffixSearchordr [];
부울 dnsenabledforwinsrsolution;
문자열 dnshostname;
문자열 dnsserversearchorder [];
부울 domaindnsregistratinabled;
UINT32 ForwardBuffermemory;
부울 fulldnsgistrationnabled;
UINT16 GatewayCostmetric [];
UINT8 IGMPLEVEL;
UINT32 지수;
UINT32 인터페이스 인덱스;
문자열 iPaddress [];
UINT32 IPCONNECTIONMETRIC;
부울 ipenabled;
부울 ipfiltersecurityEnabled;
부울 ipportsecurityEdabled;
문자열 ipsecpermitipprotocols [];
문자열 ipsecpermittcpports [];
문자열 ipsecpermitudpports [];
문자열 ipsubnet [];
부울 iPusezerobroadcast;
문자열 ipxaddress;
부울 ipxenabled;
uint32 ipxframetype [];
UINT32 IPXMEDIATYPE;
문자열 ipxnetworknumber [];
문자열 ipxvirtualnetNumber;
uint32 recopaliveinterval;
uint32 recigalivetime;
문자열 macaddress;
UINT32 MTU;
UINT32 NUMFORWARDPACKETS;
부울 pmtubhdetectenabled;
부울 pmtudiscovered;
문자열 서비스;
문자열 singetId;
UINT32 TCPIPNETBIOSOPTIONS;
UINT32 TCPMAXCONNECTRETRANSMISIVES;
UINT32 TCPMAXDATARETRANSMISS;
UINT32 tcpnumconnections;
부울 TCPUSERFC11122UGRENTPOINTER;
UINT16 tcpwindowsize;
부울 WinsenablelmhostsLookup;
문자열 winshostlookupfile;
문자열 WinsprimaryServer;
문자열 winsscopeid;
문자열이 winssecondaryserver;
};