利用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"));
}
猜你喜欢
- 有效地加载数据有时我们需大量地把数据加载到数据表,采用批量加载的方式比一个一个记录加载效率高,因为MySQL不用每加载一条记录就刷新一次索引
- 在安装好MYSQL ODBD的驱动程序后,应如何建立ASP文件连接数据库?我们有两种方法:一种是在ODBC数据源中建立一个DSN。具体方法是
- 文通过一个操作实例来说明SQL中主标识列IDENTITY的使用技巧。要求:在 sql server 2005中,建立数据表book,在表bo
- 在这个擦亮自己的眼睛去看SQL Server的系列中的第二篇中提过要写历史渊源,这里的历史主要描述的是数据库本身的历史与SQL Server
- 我们有时候看到一些文章因为一行的字符超长而把一些表格或DIV撑开或字符写到溢出了.如何防止表格防止撑开,表格不被内容撑开,单行字符超长div
- 阅读上一篇:W3C优质网页小贴士(三)明智地选择 URI没有什么比走到你最喜欢的商店门口,却发现店门紧闭,而且没有看见店面搬迁告示这种事情还
- ASP里两种常用的生成文件的方式是:利用ADODB.Stream生成文件和利用Scripting.FileSystemObject生成文件1
- 如何做一个只能从本站点才能访问的页面?可以用与防止盗链<%if left(Request.ServerVariables(&
- 用mysqldump和source可以使用这种方式导出数据:mysqldump -urott -P5678 --default-charac
- SEO是指搜索引擎优化,主要就是通过对网站的结构、标签、排版等各方面的优化,使搜索引擎更容易抓取网站的内容,并且让网站的各个网页在等搜索引擎
- 一般情况下TextArea区输入的文字数量是没有限制的,但是我们可以通过javascript限制表单的文字字数。如下javascript代码
- 我们在平常的系统开发中常常会遇到像无限级分类这样的树型结构数据,现提供一个可用的数据库存储过程,可以完成树型结构数据的排序。环境:windo
- 有一个网站A想找别的网站作为代理商,在代理商的页面上插入自己的广告。它提供一个注册页面给代理商,代理商注册后,会得到一个ID,
- 以下以 IE 代替 Internet Explorer,以 MF 代替 Mozzila FF1. document.form.item 问题
- Web2.0时代,体验式营销,体验式网站设计开始走向主流,那么体验式网站到底意味着什么?具体表现在那些地方?周末,根据建站的一点经验和观察,
- 表单验证是WEB开发中经常遇到的问题,我们以前常见的做法是:在客户端对表单域进行内容的检查,看是否是满足一定的要求或满足一定的结构,比如:是
- 首先,把这个“功能”包含到页首:<!--#include virtual="/readini/inifile.in
- <%'asp事务处理。'测试数据库为sql server,服务器为本机,数据库名为test,表名为a,两个字段id(i
- 任何数据库系统都无法避免崩溃的状况,即使你使用了Clustered,双机热备等等,仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,
- 重读LukeW的《Web Form Design:Filling in the Blanks》感触很深,除佩服LukeW的钻研精神外,更多的