利用WSH获取计算机硬件信息、DNS信息等
作者:Rimifon 来源:无忧脚本 发布时间:2008-05-05 13:04:00
monfs :我想知道javascript是否可以实现这样的功能来改变本地的IP地址,例如我本地设置的IP地址是192.168.0.1,我想通过javascript+html实现IP变换的小程序!
Rimifon :如果使用IE,会有安全限制,如果使用纯wsh或者hta,应该能够实现。
修改DNS(另存为IP.jse或者IP.js,双击运行):
var WMI = GetObject("winmgmts://127.0.0.1");
var sql = "select * from Win32_NetworkAdapterConfiguration where IPEnabled=true";
var enmPing = new Enumerator(WMI.ExecQuery(sql));
var arrAdp = new Array;
while(!enmPing.atEnd())
{
var arrIP = new Array;
var objIP = enmPing.item();
arrIP.push("网卡说明:" + objIP.Description);
arrIP.push("硬件地址:" + objIP.MACAddress);
arrIP.push("动态地址:" + (objIP.DHCPEnabled ? "是" : "否"));
arrIP.push("网络地址:" + GetVBArray(objIP.IPAddress));
arrIP.push("域名解析:" + GetVBArray(objIP.DNSServerSearchOrder));
arrIP.push("子网掩码:" + GetVBArray(objIP.IPSubnet));
arrIP.push("默认网关:" + GetVBArray(objIP.DefaultIPGateway));
/* 将首选DNS设置为220.192.0.130,第二DNS设置为220.192.32.103 */
//objIP.SetDNSServerSearchOrder(["220.192.0.130", "220.192.32.103"]);
/* 修改后需要重新查询才能生效 */
arrAdp.push(arrIP.join("\r\n"));
enmPing.moveNext();
}
WSH.Echo(arrAdp.join("\r\n\r\n"));
function GetVBArray(arr)
{
return arr !== null ? new VBArray(arr).toArray() : [];
}
查看计算机硬件信息:
var WMI = GetObject("WinMgmts://127.0.0.1");
/* 用于远程调用
var objRmt = new ActiveXObject("WbemScripting.SWbemLocator");
var WMI = objRmt.ConnectServer("www.fengyun.org", "", "Administrator", "******");
//*/
var arrOS = new Array;
/* 查询系统信息 */
var sql = "select * from Win32_OperatingSystem";
GetInfo(sql, function(obj)
{
var arrTmp = ["系统"];
arrTmp.push("计算机名:" + obj.CSName);
arrTmp.push("操作系统:" + obj.Caption + "(" + obj.CSDVersion + ")");
arrTmp.push("安装时间:" + ParseTime(obj.InstallDate));
arrTmp.push("启动时间:" + ParseTime(obj.LastBootUpTime));
return arrTmp;
});
sql = "select * from Win32_BIOS";
GetInfo(sql, function(obj)
{
var arrTmp = ["BIOS"];
arrTmp.push("名 称:" + obj.Name);
arrTmp.push("版 本:" + obj.Version);
arrTmp.push("发布日期:" + ParseTime(obj.ReleaseDate));
return arrTmp;
});
sql = "select * from Win32_Processor";
GetInfo(sql, function(obj)
{
var arrTmp = ["中央处理器"];
arrTmp.push("设备标示:" + obj.DeviceID);
arrTmp.push("名 称:" + obj.Name);
arrTmp.push("说 明:" + obj.Description);
arrTmp.push("版 本:" + obj.Version);
arrTmp.push("工作频率:" + ParseSpeed(obj.CurrentClockSpeed));
return arrTmp;
});
sql = "select * from Win32_PhysicalMemory";
GetMemInfo(sql);
sql = "select * from Win32_LogicalDisk where DriveType=3";
GetDiskInfo(sql);
sql = "select * from Win32_VideoController";
GetInfo(sql, function(obj)
{
var arrTmp = ["显卡"];
arrTmp.push("芯片类型:" + obj.VideoProcessor);
arrTmp.push("显存大小:" + ParseMemory(obj.AdapterRAM));
return arrTmp;
});
WSH.Echo(arrOS.join("\r\n\r\n"));
function GetInfo(sql, func)
{
var enmObj = new Enumerator(WMI.ExecQuery(sql));
while(!enmObj.atEnd())
{
arrOS.push(func(enmObj.item()).join("\r\n"));
enmObj.moveNext();
}
}
function ParseTime(strTime)
{
return strTime.replace(/(.{4})(.{2})(.{2})(.{2})(.{2})(.{2}).*/, "$1-$2-$3 $4:$5:$6");
}
function ParseSpeed(speed)
{
if(speed > 999) return (speed / 1000) + " GHz";
return speed + " MHz";
}
function GetMemInfo(sql)
{
var totalSize = 0;
var enmObj = new Enumerator(WMI.ExecQuery(sql));
while(!enmObj.atEnd())
{
totalSize -= -enmObj.item().Capacity;
enmObj.moveNext();
}
var arrTmp = ["物理内存(总共 " + ParseMemory(totalSize) + ")"];
enmObj.moveFirst();
while(!enmObj.atEnd())
{
var obj = enmObj.item();
arrTmp.push(obj.Tag + ": " + ParseMemory(obj.Capacity));
enmObj.moveNext();
}
arrOS.push(arrTmp.join("\r\n"));
}
function ParseMemory(size)
{
var i = 0, arrExt = ["字节", "KB", "MB", "GB"];
while(true)
{
if(size < 1024) return size + " " + arrExt[ i ];
size = (size / 1024).toFixed(2);
i++;
}
}
function GetDiskInfo(sql)
{
var totalSize = 0;
var enmObj = new Enumerator(WMI.ExecQuery(sql));
while(!enmObj.atEnd())
{
totalSize -= -enmObj.item().Size;
enmObj.moveNext();
}
var arrTmp = ["本地硬盘(总共 " + ParseMemory(totalSize) + ")"];
enmObj.moveFirst();
while(!enmObj.atEnd())
{
var obj = enmObj.item();
arrTmp.push(obj.Name + "(" + obj.FileSystem + "): 总共 " + ParseMemory(obj.Size) + "," + ParseMemory(obj.FreeSpace) + " 可用。");
enmObj.moveNext();
}
arrOS.push(arrTmp.join("\r\n"));
}


猜你喜欢
- 问题描述如下:解决方案如下:下图中字体调整为18及以上效果如下:来源:https://blog.csdn.net/appleyuchi/ar
- 1. 安装Pyechartspip install pyecharts2. 图表基础2.1 主题风格添加主题风格使用的是 InitOpts(
- 1下载安装1.1打开官网http://www.jetbrains.com/pycharm/download/耐心等待,大概200M,几分钟左
- 部署网站前查看一下系统是否已经安装CGI1、启动iis服务器,打开IIS服务器打开IIS服务器,点击网站,右击“添加网站”2、创建网站点击“
- 新年礼,提供简单、易套用的 jQuery AJAX 上传示例及代码下载。后台对文件的上传及检查,以 C#/.NET Handler 处理 (
- 算法思路1、求取源图I的平均灰度,并记录rows和cols;2、按照一定大小,分为N*M个方块,求出每块的平均值,得到子块的亮度矩阵D;3、
- 《用户研究角度看设计》系列是淘宝的用户研究团队在可用性测试之后的点滴思考。在每次与淘宝用户的直接接触、观察用户的操作之后,作为体验分析师的我
- 本文介绍了python+opencv像素的加减和加权操作的实现,分享给大家。# 目标:# 1、在图像上进行算术操作,如加减以及按位操作# 2
- 这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- /** * 得到XML文件属性的集合对象 * @param x
- 前言本文主要给大家介绍了关于python使用正则表达式的集合字符的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
- bool是Boolean的缩写,只有真(True)和假(False)两种取值bool函数只有一个参数,并根据这个参数的值返回真或者假。1.当
- 一.Array在Go语言中,数组是一个值类型(value type)所有的值类型变量在赋值和作为参数传递时都将产生一个复制动作如果作为函数的
- 前言很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了。这些人里包括曾经的
- 可以从官网加载预训练好的模型:import torchvision.models as modelsmodel = models.vgg16
- 默认值可以很方便众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(JavaScript中如果对象中不存在某个属
- 本文实例讲述了Python简单实现Base64编码和解码的方法。分享给大家供大家参考,具体如下:Base64编码是一种“防君子不防小人”的编
- 我就废话不多说了,直接上代码吧!import mathimport numpy as npimport matplotlib.pyplot
- 本文实例讲述了Python写入CSV文件的方法。分享给大家供大家参考。具体如下:# _*_ coding:utf-8 _*_#xiaohei
- 前端通过Ajax来获取服务器资源时,会存在跨域问题。因为Ajax只能同源使用(预防某些恶意行为),所以当访问不在同一个域中的资源时,就会出现